【问题标题】:Scrapy, how to extract h3 content?Scrapy,如何提取h3内容?
【发布时间】:2016-05-31 11:20:08
【问题描述】:

我想提取每个div class="summary" 中的网页内容。 并且在每个summary div中,我想提取div中每个类的数据。

以下是我的sn-p。

questions = Selector(response).xpath('//div[@class="summary"]')
for question in questions:
    item = StackItem()
    # get the hyperlink of h3 text
    item['title'] = question.xpath('a[@h3]/text()').extract()[0]
    yield item

我应该如何在我的代码中编写 xpath 内容?

【问题讨论】:

  • 如果你删除你的 [0],你会得到什么输出?
  • @Error404E,空列表[]。所以xpath参数有问题
  • 我从来没有用过 Scrapy,但是如果你把你的第一个 xpath 像这样://div[@class="summary"]/h3?
  • @Error404,我试过了,我工作正常,但我需要更多数据。
  • 然后,正如@har07 的回答所建议的,你必须在a 之前阅读你的h3,因为ah3 的孩子。

标签: python css xpath scrapy web-crawler


【解决方案1】:

您的第二个 XPath 查找 a 元素,它是 div[@class="summary"] 的直接子元素,并且具有属性 h3,该属性在发布的 HTML 中不存在。

div 获取h3 内的a 元素的正确XPath 如下:

h3/a/text()

【讨论】:

    【解决方案2】:

    换一种说法可能是:

    questions = Selector(response).xpath('div[@class="summary"]/h3')
    

    为了从<a>获取数据:

    item['title'] = question.xpath('/a/text()').extract()[0]
    

    如果您要提取的所有数据都在 h3 标记内,这很有用。

    【讨论】:

      猜你喜欢
      • 2020-10-28
      • 2021-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-06
      • 1970-01-01
      • 2022-07-15
      • 1970-01-01
      相关资源
      最近更新 更多