【问题标题】:Using tor and python to scrape Google Scholar使用 tor 和 python 抓取 Google Scholar
【发布时间】:2012-07-11 17:12:48
【问题描述】:

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

这是我遵循的策略:

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

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

我已经成功设置并运行了 Academic.py 和 tor。我对 python 或库 urllib2 不是很熟悉,想知道需要对 Academic.py 进行哪些修改,以便通过 Tor 路由查询。

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

提前致谢

【问题讨论】:

    标签: python web-scraping tor google-scholar


    【解决方案1】:

    对我来说,使用 TOR 的最佳方式是 setting up a local proxy like 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 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 上做傻事的免费通行证,因为即使使用它,您也不应该假设自己是完全匿名的。

    【讨论】:

    • 第一个链接不再有效
    • 链接失效,这就是为什么仅链接的答案很糟糕...我应该在答案中包含说明,不幸的是我现在没有时间去做,对不起。
    • 链接暂时备份
    猜你喜欢
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    相关资源
    最近更新 更多