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等包来获取动态加载的数据。