Scrapy/Python/XPath - 如何从数据中提取数据?

Ale*_*egg 5 python xpath scrapy web-scraping

我是Scrapy的新手,我刚刚开始研究XPath.

我正在尝试从div中的html列表项中提取标题和链接.下面的代码是我以为我会去做的,(选择ul div,通过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
Run Code Online (Sandbox Code Playgroud)

但是我收到了与此尝试相同的结果:

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
Run Code Online (Sandbox Code Playgroud)

导出的csv文件包含源代码从上到下的li数据...

我不是专家,我已经做过多次尝试,如果有人能够对此有所了解,我将不胜感激.

ale*_*cxe 8

您需要使用点开始在内部循环内使用的xpath表达式:

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

这将使其在当前元素的范围内进行搜索,而不是整个页面.

使用相对XPath时查看更多解释.