我尝试在 scrapy shell 中从 Daraz 抓取书籍,但我没有得到任何东西。
链接:Daraz
这是我得到的结果:
In [90]: response.css('#root > div > div.ant-row.c10-Cg > div:nth-child(1) > div > div.ant-col-20.ant-col-push-4.c1z9Ut
...: > div.c1_t2i > div:nth-child(1) > div > div > div.c3KeDq > div.c16H9d > a::text').getall()
Out[90]: []
Daraz 是一个动态生成的网站。意思是,某些项目仅在实际浏览器打开网站时生成。
当你从你的 python 文件中发出获取请求时,你只能得到项目应该去哪里的框架,而不是实际的项目,所以它不会识别你发送的类名。
如果您是初学者,我建议您使用 Selenium 来抓取动态生成的网站。
本网站使用了 JavaScript 导致此效果:
Daraz 是一个动态生成的网站。意思是,某些项目仅在实际浏览器打开网站时生成。
scrapy-splash 如果您想抓取动态生成的网页并且不想使用其他工具(如 selenium),则可能是最好的方法。可以安装:
pip install scrapy-splash
Splash 是一个带有 HTTP API 的 javascript 渲染服务。它是一个带有 HTTP API 的轻量级浏览器,使用 Twisted 和 QT5 在 Python 3 中实现。 它速度快、重量轻且无状态,因此易于分发。
Splash 是一个带有 HTTP API 的 javascript 渲染服务。它是一个带有 HTTP API 的轻量级浏览器,使用 Twisted 和 QT5 在 Python 3 中实现。
它快速、轻量且无状态,使其易于分发。
阅读文档