【问题标题】:Scrapy getting href out of divScrapy从div中获取href
【发布时间】:2016-07-16 20:06:54
【问题描述】:

我开始在一个小项目中使用 Scrapy,但无法提取链接。每次找到该类时,我只得到“[]”而不是 url。我错过了什么明显的东西吗?

sel = Selector(response)
for entry in sel.xpath("//div[@class='recipe-description']"):
    print entry.xpath('href').extract()

来自网站的示例:

<div class="recipe-description">
    <a href="http://www.url.com/">
        <h2 class="rows-2"><span>SomeText</span></h2>
    </a>
</div>

【问题讨论】:

  • 我认为您的 xpath 查询是错误的。您必须选择链接,然后获取 href 属性。像这样://a[@href]

标签: python web-scraping scrapy


【解决方案1】:

您的 xpath 查询错误

for entry in sel.xpath("//div[@class='recipe-description']"):

在这一行中,您实际上是在迭代我们没有任何 Href 属性的 div

为了使其正确,您应该在div 中选择achor 元素:

for entry in sel.xpath("//div[@class='recipe-description']/a"):
    print entry.xpath('href').extract()

最好的解决方案是直接在for循环中提取href属性

for href in sel.xpath("//div[@class='recipe-description']/a/@href").extract():
    print href

为简单起见,您还可以使用 css 选择器

for href in sel.css("div.recipe-description a::attr(href)").extract():
    print href

【讨论】:

  • 非常感谢,成功了。看来我误解了 xpath 背后的想法。
猜你喜欢
  • 2019-01-18
  • 2020-02-27
  • 1970-01-01
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 2017-11-07
  • 1970-01-01
  • 2021-12-28
相关资源
最近更新 更多