scrapy PYTHON:用scrappy抓取Researchgate.net返回“Just a moment”而不是作者的页面

ddrv8njm  于 11个月前  发布在  Python
关注(0)|答案(1)|浏览(399)

对于一个项目,我想从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中)

这一步似乎起了作用,因为输出变成了
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

wpx232ag

wpx232ag1#

您试图删除的网站位于Cloudflare服务之后。它很可能会保护它免受bot和scraper的攻击,并将您检测为bot,这就是为什么您会收到403状态代码并要求启用JavaScript和cookie以通过“Cloudflare挑战”。

  • FlareSolverr是一个允许您绕过Cloudflare挑战的工具。
  • 尝试使用selenium,这将打开一个实际的浏览器,你需要将它与Beautifulsoup结合合并来进行 scrapy ,但使用起来可能比scrapy复杂一点。

相关问题