我想使用 python 来抓取谷歌学术搜索结果。我找到了两个不同的脚本来做到这一点,一个是gscholar.py https://github.com/venthur/gscholar另一个是scholar.py
(那个可以用作 python 库吗?)。
现在,我也许应该说我对 python 完全陌生,如果我错过了显而易见的事情,我很抱歉!
问题是当我使用gscholar.py
正如自述文件中所述,我得到的结果是
query() takes at least 2 arguments (1 given)
.
即使我指定了另一个参数(例如gscholar.query("my query", allresults=True)
, I get
query() takes at least 2 arguments (2 given)
.
这让我很困惑。我还尝试指定第三个可能的参数(outformat=4
;这是 BibTex 格式),但这给了我一个函数错误列表。一位同事建议我导入 BeautifulSoup 并this http://code.activestate.com/recipes/523047-search-google-scholar/在运行查询之前,但这也不会改变问题。有什么建议如何解决问题吗?
我找到了 R 的代码(参见link http://www.github.com/gimoya/theBioBucket-Archives/blob/master/R/Functions/GScholarScraper_3.1.R)作为解决方案,但很快就被谷歌屏蔽了。也许有人可以建议如何改进该代码以避免被阻止?任何帮助,将不胜感激!谢谢!
我建议您不要使用特定的库来抓取特定的网站,而是使用经过良好测试且具有良好格式文档的通用 HTML 库,例如 BeautifulSoup。
要使用浏览器信息访问网站,您可以使用带有自定义用户代理的 url opener 类:
from urllib import FancyURLopener
class MyOpener(FancyURLopener):
version = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36'
openurl = MyOpener().open
然后下载所需的url,如下:
openurl(url).read()
要检索学者结果,只需使用http://scholar.google.se/scholar?hl=en&q=${query}
url.
要从检索到的 HTML 文件中提取信息,您可以使用这段代码:
from bs4 import SoupStrainer, BeautifulSoup
page = BeautifulSoup(openurl(url).read(), parse_only=SoupStrainer('div', id='gs_ab_md'))
这段代码提取了一个具体的div
包含 Google 学术搜索结果页面中显示的结果数的元素。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)