scrapy下载html页面,但可以使用XPath或css获取数据
我正在尝试刮这个,当我做scrapy下载html页面,但可以使用XPath或css获取数据,scrapy,scrapy-shell,Scrapy,Scrapy Shell,我正在尝试刮这个,当我做刮壳“https://redsea.com/en/apple-iphone-x-64gb-silver.html“,它将下载html页面,我可以在浏览器中使用查看(响应)查看下载的html: 但是,当我试图通过response.css('.page title')获取任何数据(例如,产品名称)时,它会给出空的响应: 使用scrapy使用RESTAPI获取数据的网站只需下载没有数据的网站结构html,scrapy无法获取数据是有道理的。但在本例中,scrapy下载包含数
刮壳“https://redsea.com/en/apple-iphone-x-64gb-silver.html“
,它将下载html页面,我可以在浏览器中使用查看(响应)
查看下载的html:
但是,当我试图通过response.css('.page title')
获取任何数据(例如,产品名称)时,它会给出空的响应:
使用scrapy使用RESTAPI获取数据的网站只需下载没有数据的网站结构html,scrapy无法获取数据是有道理的。但在本例中,scrapy下载包含数据的html文件,但无法使用css或XPath读取该文件。我不理解这种行为
但在本例中,scrapy下载包含数据的html文件,但无法使用css或XPath读取该文件
事实并非如此,当您在浏览器中打开HTML时,JavaScript会从单独的URL或JavaScript中的硬编码值将内容加载到DOM中,这就是为什么您可以使用查看(响应)
查看内容的原因
如果您检查实际的HTML内容(例如,在浏览器中打开页面源,在Firefox中使用Ctrl+U
),您将看到所需的数据根本不存在,或者在
元素中
打开web浏览器开发者工具的“网络”选项卡,强制重新加载页面(Firefox中的“Ctrl+Shift+R
”)并查看在后台执行的其他请求,其中一个请求可能包含所需的数据
然后,您可以让Scrapy执行类似于在后台发出的请求的请求。我们没有在页面源中获取值,这意味着数据是动态加载的。因此,您必须使用splash、selenium等包来获取动态加载的数据。