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

Posted

技术标签:

【中文标题】Scrapy/Python/XPath - 如何从数据中提取数据?【英文标题】:Scrapy/Python/XPath - How to extract data from within data? 【发布时间】:2014-11-07 17:26:45 【问题描述】:

我是 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

但我收到了与这次尝试相同的结果:

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文件包含从源代码上到下的li数据...

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

【问题讨论】:

【参考方案1】:

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

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

这将使它在当前元素的范围内搜索,而不是整个页面。

在Working with relative XPaths查看更多解释。

【讨论】:

以上是关于Scrapy/Python/XPath - 如何从数据中提取数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何从外部从 GitHub 加载 JavaScript 文件? [复制]

如何将数据从回收器适配器发送到片段 |如何从 recyclerview 适配器调用片段函数

如何从 Firebase 获取所有设备令牌?

如何直接从类调用从接口继承的方法?

如何从服务器获取和设置 android 中的 API(从服务器获取 int 值)?如何绑定和实现这个

如何从Mac从android studio中的fabric注销? [复制]