抓取Google学术搜索

Pet*_*ter 7 python web-crawler google-scholar

作为我研究的一部分,我试图获取大量学术文章的信息.文章数量大约为数千.由于谷歌学术搜索没有API,我试图抓住/爬行学者.现在我现在,这在技术上是针对EULA的,但我试图对此非常礼貌和合理.我了解Google不允许机器人将流量控制在合理范围内.我开始测试一批约500个请求,每个请求之间有1个.关于前100个请求后我被阻止了.我尝试了多种其他策略,包括:

  1. 将暂停时间延长至20秒并为其添加一些随机噪声
  2. 使暂停记录正常分布(以便大多数暂停大约为秒,但偶尔会有几分钟甚至更长的暂停)
  3. 在请求块之间进行长时间暂停(几个小时)(~100).

我怀疑,在这一点上,我的剧本正在增加任何人类所需的大量流量.但是,在约100-200个请求之后,我总是被阻止.有没有人知道一个很好的策略来克服这个问题(我不关心它是否需要数周,只要它是自动化的).此外,是否有人直接与谷歌签约并要求获得类似的事情(研究等)?是否值得尝试编写它们并解释我正在尝试做什么以及如何做,并看看我是否可以获得我的项目的许可?我将如何与他们联系?谢谢!

Mor*_*all 2

未经测试,我仍然非常确定以下其中一项可以解决问题:

  1. 简单,但成功的机会很小:

    在每次 rand(0,100) 请求后删除相关站点的所有 cookie,
    然后更改您的用户代理、接受的语言等并重复。

  2. 多做一点工作,但结果是一个更坚固的蜘蛛:

    通过 Tor、其他代理、移动网络等发送您的请求以屏蔽您的 IP(也请每次都执行建议 1

关于 Selenium 的更新 我错过了您正在使用 Selenium 的事实,理所当然地认为它只是某种现代编程语言(我知道 Selenium 可以由最广泛使用的语言驱动,但也可以作为某种浏览器插件,要求很少的编程技能)。

因为我认为您的编码技能并不(或不是?)令人难以置信,并且对于其他在使用 Selenium 时具有相同限制的人,我的答案是学习一种简单的脚本语言(PowerShell?!)或 JavaScript (因为这是您所在的网络;-))并从那里获取它。

如果顺利地自动进行抓取就像浏览器插件一样简单,那么网络将不得不成为一个更加混乱、混乱和需要凭据的地方。