2014-09-13 166 views
3

我是Scrapy的新手,我剛開始研究XPath。Scrapy/Python/XPath - 如何從數據中提取數據?

我想從div中的html列表項中提取標題和鏈接。下面的代碼是我怎麼想我會去這樣做,(選擇UL格,通過ID,然後通過列表項循環):

def parse(self, response): 
    for t in response.xpath('//*[@id="categories"]/ul'): 
     for x in t.xpath('//li'): 
      item = TgmItem() 
      item['title'] = x.xpath('a/text()').extract() 
      item['link'] = x.xpath('a/@href').extract() 
      yield item 

但我收到了相同的結果,這樣的嘗試:

def parse(self, response): 
    for x in response.xpath('//li'): 
     item = TgmItem() 
     item['title'] = x.xpath('a/text()').extract() 
     item['link'] = x.xpath('a/@href').extract() 
     yield item 

凡導出CSV文件包含從源代碼從上到下L1數據...

我不是專家,我做了一些嘗試,如果任何人都可以對一些線索這將不勝感激。

回答

5

您需要先從一個點的內環內使用您的XPath表達式:

for t in response.xpath('//*[@id="categories"]/ul'): 
    for x in t.xpath('.//li'): 

這將使它在當前元素,而不是整個頁面的範圍搜索。

Working with relative XPaths查看更多解釋。