抓取Google学术搜索

时间:2016-03-28 20:45:12

标签: python web-crawler google-scholar

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

  1. 将暂停时间延长至〜20秒并向其添加一些随机噪音
  2. 使暂停记录正常分布(以便大多数暂停时间为秒,但偶尔会有几分钟甚至更长时间的暂停)
  3. 在请求块之间进行长时间暂停(几个小时)(~100)。
  4. 我怀疑在这一点上,我的剧本正在增加任何人类所需的大量流量。但是,在约100-200个请求之后,我总是被阻止。有没有人知道一个很好的策略来克服这个问题(我不关心它是否需要数周,只要它是自动化的)。此外,是否有人直接与谷歌签约并要求获得类似的事情(研究等)?是否值得尝试编写它们并解释我正在尝试做什么以及如何做,并看看我是否可以获得我的项目的许可?我将如何与他们联系?谢谢!

1 个答案:

答案 0 :(得分:1)

如果不进行测试,我仍然非常确定以下其中一项可以解决问题:

  1. 容易,但成功的可能性很小:

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

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

    通过Tor,其他代理,移动网络等发送您的请求以屏蔽您的IP(也会在每个回合中做出建议1

  3. 关于Selenium的更新 我错过了你使用Selenium的事实,理所当然它只是某种现代编程语言(我知道Selenium可以被最广泛使用的语言驱动,但作为一些一种浏览器插件,要求很少的编程技巧)。

    因为我认为你的编码技巧不是(或者不是)令人难以置信的,而对于使用Selenium时具有相同限制的其他人,我的答案是学习一个简单的,脚本语言(PowerShell ?!)或JavaScript(因为它是你所依赖的网站;-))并从那里接受它。

    如果顺利自动化抓取就像浏览器插件一样简单,那么网络就必须是一个更加混乱,模糊和凭据要求更高的地方。

相关问题