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

问题描述 投票:0回答:1

对于一个项目,我想从 Researchgate 收集合着数据。

我对网络抓取完全陌生,并为这个项目推荐了 scrapy。 我想从这个网址开始抓取(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

python scrapy scrapy-splash
1个回答
0
投票

您尝试废弃的网站位于 cloudflare 服务背后。它很可能会保护它免受机器人和抓取工具的侵害,并将您检测为机器人,这就是为什么您会收到 403 状态代码并要求启用 javascript 和 cookie 以通过“Cloudflare 挑战”。

  • FlareSolverr 是一款可以让您绕过 Cloudflare 挑战的工具。
  • 尝试使用 selenium,它将打开一个实际的浏览器,您需要将其与 Beautifulsoup 结合起来进行废弃,但使用起来可能比 scrapy 更复杂一些。
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.