对于一个项目,我想从researchgate收集合著数据。
我是一个完全不熟悉网页抓取的人,我被推荐参加这个项目。我想从这个网址(url = https://www.researchgate.net/scientific-contributions/Gregory-Phelan-2126234043)开始抓取,从这里我想抓取合著者,然后我想抓取他们的合著者,等等,直到我形成一个网络。
我一直在尝试用Scrapy获取这个URL,例如使用fetch('url')命令,并在Windows PowerShell中运行Scrapy Shell 'url',但这返回了以下内容:
Output after opening scrapy shell的
经过一些研究,我安装了Docker并结合了Scrapy和Splash。在这样做之后,我尝试用URL打开Scrapy shell,但这次我运行了(再次在PowerShell中)
- scrapy shell“http://localhost:8050/render. html?url:https://www.researchgate.net/scientific- contributions/Gregory-Renderan-2126234043”
这一步似乎起了作用,因为输出变成了
output after opening the scrapy shell的
但是,在运行response.css('title')获取标题后,它返回了
- [稍等...'>]
response.text输出的一部分也是:
- span id=“challenge-error-text”>启用JavaScript和Cookie以继续
所以对我来说,似乎Scrapy不知何故无法到达这个链接。
我还读到了在shell启动中包含一个USER_AGENT,因此我首先尝试了我自己的,之后又尝试了几个随机生成的(使用UserAgent()),但这并没有改变结果。
有没有人有建议,成功地获取此链接,并开始刮?
我使用python版本3.11.5和scrapy版本2.11.0
1条答案
按热度按时间wpx232ag1#
您试图删除的网站位于Cloudflare服务之后。它很可能会保护它免受bot和scraper的攻击,并将您检测为bot,这就是为什么您会收到403状态代码并要求启用JavaScript和cookie以通过“Cloudflare挑战”。