嗨,伙计们,我正试图从谷歌的一些论文的引用。这是我的代码
import urllib
import mechanize
from bs4 import BeautifulSoup
import csv
import os #change directory
import re #for regular expressions
br = mechanize.Browser()
br.set_handle_equiv(False)
br.set_handle_robots(False) # ignore robots
br.addheaders = [('User-agent', 'Firefox')] # [()]
br.open('http://google.com/')
br.select_form(name='f') # Note: select the form named 'f' here
term = "Multinational Study of the Efficacy and Safety of Humanized Anti-HER2 Monoclonal Antibody in Women Who Have HER2-Overexpressing Metastatic Breast Cancer That Has Progressed After Chemotherapy for Metastatic Disease".replace(" ","+")
br.form['q'] = term # query
data = br.submit()
soup = BeautifulSoup(data)
cite= soup.findAll('div',{'class': 'f slp'})
ref = str(cite[1])
print ref
然而我总是出错。我想知道这篇论文的引用次数。
2条答案
按热度按时间tp5buhyn1#
问题是在表单提交后,您获得的页面上没有引用信息,换句话说,没有
f slp
类的div
。您可以使用以下几个选项来解决此问题:
另见:
希望能有所帮助。
toiithl62#
要从Google获取大量论文的引文,可以使用regular expressions突出显示
snippet
中的cited by
:为了从所有页面收集信息,您需要使用带有
while
循环的分页。只要下一个按钮存在(由页面上是否存在按钮选择器决定,在我们的例子中是CSS选择器".d6cvqb a [id = pnnext]",您需要将["start"]的值增加10才能访问下一个页面,如果存在,否则,我们需要退出while循环:
检查在线IDE中的代码。
输出示例:
另外一个解决方案是使用SerpApi的Google Search Engine Results API,这是一个免费的付费API,不同的是它会绕过Google的块(包括CAPTCHA),不需要创建解析器和维护它。
代码示例:
输出: