【问题标题】:Using Scrapy to crawl shopping store data使用 Scrapy 抓取购物商店数据
【发布时间】:2017-10-05 05:25:38
【问题描述】:

我正在尝试使用 scrapy 抓取购物网站的价格。考虑下面这段代码,从网站的scrapy shell执行:

response.xpath('//*[@id="content"]/div[2]/div/div/div[5]/div[1]').extract()

结果是这样的:

[u'<div class="subcategory-title"><span class="placeholder"></span></div>']

但在页面源代码(使用 chrome 开发者工具查看)上,我可以看到该行:

<div class="subcategory-title">Organic Vegetables</div>

首先,“有机蔬菜”是如何被跨度隐藏的?其次,如何获取文本而不是空的 span 元素?

谢谢。

【问题讨论】:

  • 可能您忘记在 XPath 中添加 /text()
  • 如何使用 BeautifulSoup 和 Request 实现相同的目标?那是不是使用 Scrapy 或 Splash?
  • 试着把你的xpath改成//*[@id="content"]/div[2]/div/div/div[5]/div[1]/text()

标签: python html web-scraping scrapy


【解决方案1】:

您可能会看到一个跨度,因为文本节点是使用 JavaScript 动态生成的。

Splash 等与 Scrapy 配合良好的库可以帮助您抓取所需的页面。

有关此链接的更多信息,请访问此链接scrapy-splash usage for rendering javascript

【讨论】: