我正在做一个项目来分析期刊文章是如何被引用的。我有一个很大的期刊文章名称文件。我打算将它们传递给 Google Scholar 并查看它们的引用次数。

这是我遵循的策略:

  • 使用 http://www.icir.org/christian/scholar.html 中的“scholar.py”。这是一个预先编写的python脚本,用于搜索谷歌学者并以CSV格式返回第一次命中的信息(包括引用次数)
  • 搜索一定次数后,谷歌学者屏蔽了你(我有大约 3000 篇文章标题要查询)。我发现大多数人使用 Tor( How to make urllib2 requests through Tor in Python?Prevent Custom Web Crawler from being blocked )来解决这个问题。 Tor 是一种服务,每隔几分钟就会为您提供一个随机 IP 地址。

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

    如果存在,我也愿意为大量谷歌学者查询提供一种更简单(并且可能相当不同)的方法的建议。

    提前致谢

    最佳答案

    对我来说,使用 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"
    

    我喜欢使用 requests 库,这是一个更好的 urllib 包装器。如果你还没有它:
    pip install requests
    

    如果 urllib 使用 Tor,则以下单行应该打印 True:
    python -c "import requests; print('Congratulations' in requests.get('http://check.torproject.org/').text)"
    

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

    关于python - 使用 tor 和 python 抓取 Google Scholar,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11443600/

    10-15 09:41