我想用python来搜索google scholar的搜索结果。我找到了两个不同的脚本,一个是gscholar.py,另一个是scholar.py
(这个脚本可以用作python库吗?)。
现在,我应该说我对python是完全陌生的,如果我错过了显而易见的东西,我会很抱歉!
问题是,当我使用gscholar.py
时,如自述文件中所述,我得到的结果是
query() takes at least 2 arguments (1 given)
。
即使我指定了另一个参数(例如gscholar.query("my query", allresults=True)
),我也会得到
query() takes at least 2 arguments (2 given)
。
这让我困惑。我还试图指定第三个可能的参数(outformat=4
;这是BibTex格式),但这给了我一个函数错误列表。一位同事建议我在运行查询之前导入BeautifulSoup和this,但这并不能改变问题。有什么解决问题的建议吗?
我发现R的代码(见link)是一个解决方案,但很快被google屏蔽了。也许有人可以建议如何改进代码以避免被阻止?任何帮助都将不胜感激!谢谢!
谷歌会阻止你。。。显然你不是一个浏览器。也就是说,它们会检测到同样的请求签名,这种签名对于人类活动来说太频繁了。。。。
你可以:
看起来,与Python和R的摩擦遇到了一个问题,Google Scholar将您的请求视为一个机器人查询,因为请求中缺少用户代理。StackExchange中有一个关于downloading all pdfs linked from a web page的类似问题,这个问题的答案将用户引向Unix中的wget和Python中的BeautifulSoup包。
Curl似乎也是一个更有希望的方向。
我建议您不要使用特定的库来抓取特定的网站,而是使用经过良好测试并具有格式良好的文档(如BeautifulSoup)的通用HTML库。
要使用浏览器信息访问网站,可以将url打开器类与自定义用户代理一起使用:
然后下载所需的url,如下所示:
检索学者结果只需使用
http://scholar.google.se/scholar?hl=en&q=${query}
url。要从检索到的HTML文件中提取信息,可以使用以下代码:
这段代码提取了一个具体的
div
元素,该元素包含Google Scholar搜索结果页面中显示的结果数。相关问题 更多 >
编程相关推荐