scrapy下载html页面但可以使用xpaths或css获取数据

时间:2017-11-07 17:01:01

标签: scrapy scrapy-shell

我正在尝试抓取此page,当我执行scrapy shell "https://redsea.com/en/apple-iphone-x-64gb-silver.html"时,它会下载html页面,我可以在浏览器中使用view(response)查看下载的html: enter image description here enter image description here

但是当我尝试获取任何数据产品名称时,例如response.css('.page-title'),它会给我空响应: enter image description here

使用scrapy刮取使用rest-api获取数据的网站只需下载没有数据的网站结构html,scrapy无法获取该数据是有道理的。但在这种情况下,scrapy会使用数据下载html文件,但无法使用css或xpaths读取它。我不明白这种行为。

1 个答案:

答案 0 :(得分:2)

  

但是在这种情况下,scrapy会下载包含数据的html文件,但无法使用css或xpaths读取它。

当您在浏览器中打开HTML时,JavaScript并没有通过单独的URL或JavaScript中的硬编码值将内容加载到DOM中,因此您可以使用{ {1}}。

如果您检查实际的HTML内容(例如,在浏览器中打开页面源,在Firefox中打开view(response)),则会看到所需的数据根本不存在或在{{1 }}元素。

打开网络浏览器开发人员工具的“网络”标签,强制重新加载页面(在Firefox中为Ctrl+U),并查看在后台执行的其他请求,其中之一可能具有所需数据。

然后,您可以让Scrapy执行类似于在后台进行的请求。