对于一个项目,我想从 Researchgate 收集合着数据。
我对网络抓取完全陌生,并为这个项目推荐了 scrapy。 我想从这个网址开始抓取(url = https://www.researchgate.net/scientific-contributions/Gregory-Phelan-2126234043),我想从中抓取合著者,之后我想抓取他们的合著者,依此类推,直到我形成一个网络。
我一直在尝试使用 Scrapy 获取这个 url,例如使用fetch('url') 命令,并在 Windows Powershell 中运行 Scrapy Shell 'url',但这返回以下内容:
经过一番研究,我安装了 Docker,并结合了 Scrapy 和 Splash。完成此操作后,我重新尝试使用 URL 打开 Scrapy shell,但这一次我运行了(再次在 Powershell 中)
这首先似乎有效,因为输出更改为
但是,运行response.css('title')获取标题后,它返回了
response.text 输出的部分内容也是:
所以对我来说,Scrapy 似乎无法访问此链接。
我还阅读了有关在 shell 启动中包含 USER_AGENT 的信息,因此我首先尝试了自己的,然后再尝试了几个随机生成的(使用 UserAgent()),但这并没有改变结果。
有人建议成功获取此链接并开始抓取吗?
我使用python版本3.11.5,和scrapy版本2.11.0
您尝试废弃的网站位于 cloudflare 服务背后。它很可能会保护它免受机器人和抓取工具的侵害,并将您检测为机器人,这就是为什么您会收到 403 状态代码并要求启用 javascript 和 cookie 以通过“Cloudflare 挑战”。