12

我正在做一个项目来分析期刊文章是如何被引用的。我有一个很大的期刊文章名称文件。我打算把它们传给 Google Scholar,看看每个有多少引用。

这是我遵循的策略:

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

  2. 谷歌学者在一定数量的搜索后阻止你(我有大约 3000 篇文章标题要查询)。我发现大多数人使用 Tor(如何在 Python 中通过 Tor 发出 urllib2 请求?防止自定义网络爬虫被阻止)来解决这个问题。Tor 是一种每隔几分钟就会给你一个随机 IP 地址的服务。

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

如果存在大规模谷歌学者查询,我也愿意接受更简单(并且可能相当不同)的方法的建议。

提前致谢

4

1 回答 1

2

对我来说,使用 TOR 的最佳方式是设置一个本地代理,例如 polipo。我喜欢克隆 repo 并在本地编译:

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

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

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

然后运行它:

polipo

请参阅urllib 文档了解如何使用代理。像许多 unix 应用程序一样,urllib 将尊重环境变量http_proxy

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

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

pip install requests

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

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

最后一件事,请注意:Tor 网络并不是在 Internet 上做傻事的免费通行证,因为即使使用它,您也不应该假设您是完全匿名的。

于 2012-07-12T02:07:57.430 回答