使用tor和python来刮掉谷歌学者

时间:2012-07-12 00:42:15

标签: python web-scraping tor google-scholar

我正在开展一个项目来分析如何引用期刊文章。我有一个大型的期刊文章名称文件。我打算将它们传递给Google学术搜索,并查看每个引用的引用次数。

以下是我所遵循的策略:

  1. 使用" scholar.py"来自http://www.icir.org/christian/scholar.html。这是一个预先编写的python脚本,可以搜索谷歌学者并以CSV格式返回首次点击的信息(包括引用次数)

  2. 谷歌学者在经过一定数量的搜索后阻止了你(我有大约3000篇文章要查询)。我发现大多数人使用Tor(How to make urllib2 requests through Tor in Python?Prevent Custom Web Crawler from being blocked)来解决这个问题。 Tor是一种每隔几分钟为您提供一个随机IP地址的服务。

  3. 我有scholar.py和tor都成功设置和工作。我对python或库urllib2不太熟悉,并想知道scholar.py需要进行哪些修改,以便通过Tor路由查询。

    如果存在大规模谷歌学者查询,我也可以接受更容易(并且可能有很大差异)方法的建议。

    提前致谢

1 个答案:

答案 0 :(得分:1)

对我来说,使用TOR的最佳方式是setting up a local proxy like polipo。我喜欢克隆repo并在本地编译:

git clone https://github.com/jech/polipo.git
cd polipo
make all
make install

但您可以使用您的软件包管理器(Mac中的brew install polipo,Ubuntu上的apt install polipo)。然后编写一个简单的配置文件:

echo socksParentProxy=localhost:9050 > ~/.polipo
echo diskCacheRoot='""' >> ~/.polipo
echo disableLocalInterface=true >> ~/.polipo

然后运行它:

polipo

urllib docs on how to use a proxy。与许多unix应用程序一样,urllib将遵循环境变量http_proxy

export http_proxy="http://localhost:8123"
export https_proxy="http://localhost:8123"

我喜欢使用请求库,一个更好的urllib包装器。如果您还没有:

pip install requests

如果urllib正在使用Tor,则以下单行应打印为True:

python -c "import requests; print('Congratulations' in requests.get('http://check.torproject.org/').text)"

最后一点,要注意:Tor网络不是在互联网上做愚蠢事情的免费通行证,因为即使使用它你也不应该认为你完全是匿名的。