scrapy 下载 html 页面但可以使用 xpaths 或 css 获取数据
scrapy downloads the html page but could get data using xpaths or css
我正在尝试抓取此 page,当我执行 scrapy shell "https://redsea.com/en/apple-iphone-x-64gb-silver.html"
时,它会下载 html 页面,我可以使用 [=13= 查看下载的 html ] 在浏览器中:
但是当我试图通过 response.css('.page-title')
获取任何数据 - 产品名称时,它给了我空洞的回应:
使用 scrapy 抓取使用 rest-api 获取数据的网站只会下载没有数据的网站结构 html,scrapy 无法获取该数据是有道理的。但是在这种情况下,scrapy 下载了包含数据的 html 文件,但无法使用 css 或 xpaths 读取它。我不明白这种行为。
But in this case scrapy downloads the html file with data but not able to read it using css or xpaths.
它不会,当您在浏览器中打开 HTML 时,JavaScript 会从单独的 URL 或来自 JavaScript 中的硬编码值,这就是为什么您可以使用 view(response)
.
查看内容的原因
如果您检查实际的 HTML 内容(例如,在浏览器中打开页面源,在 Firefox 中 Ctrl+U
),您会发现您想要的数据要么根本不存在或在 <script/>
元素内。
打开网络浏览器开发人员工具的“网络”选项卡,强制重新加载页面(Ctrl+Shift+R
在 Firefox 中)并观察在后台执行的其他请求,其中一个可能是有想要的数据。
然后您可以让 Scrapy 执行类似于在后台发出的请求的请求。
我正在尝试抓取此 page,当我执行 scrapy shell "https://redsea.com/en/apple-iphone-x-64gb-silver.html"
时,它会下载 html 页面,我可以使用 [=13= 查看下载的 html ] 在浏览器中:
但是当我试图通过 response.css('.page-title')
获取任何数据 - 产品名称时,它给了我空洞的回应:
使用 scrapy 抓取使用 rest-api 获取数据的网站只会下载没有数据的网站结构 html,scrapy 无法获取该数据是有道理的。但是在这种情况下,scrapy 下载了包含数据的 html 文件,但无法使用 css 或 xpaths 读取它。我不明白这种行为。
But in this case scrapy downloads the html file with data but not able to read it using css or xpaths.
它不会,当您在浏览器中打开 HTML 时,JavaScript 会从单独的 URL 或来自 JavaScript 中的硬编码值,这就是为什么您可以使用 view(response)
.
如果您检查实际的 HTML 内容(例如,在浏览器中打开页面源,在 Firefox 中 Ctrl+U
),您会发现您想要的数据要么根本不存在或在 <script/>
元素内。
打开网络浏览器开发人员工具的“网络”选项卡,强制重新加载页面(Ctrl+Shift+R
在 Firefox 中)并观察在后台执行的其他请求,其中一个可能是有想要的数据。
然后您可以让 Scrapy 执行类似于在后台发出的请求的请求。