【问题标题】:Scrapy/Python/XPath - How to extract data from within data?Scrapy/Python/XPath - 如何从数据中提取数据?
【发布时间】: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数据...

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

【问题讨论】:

    标签: python xpath web-scraping scrapy


    【解决方案1】:

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

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

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

    Working with relative XPaths查看更多解释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多