我编写了这段代码来模拟一些点击以获取Google学者页面的引文。
def APAcite (papers):
gscholar= 'https://scholar.google.com/scholar?hl=en&q='
cites = []
for p in papers:
print(p)
address = gscholar + p
Nbrowser = webdriver.Chrome(chrome_p)
Nbrowser.get(address)
Nbrowser.find_element_by_link_text('Cite').click()
APA = Nbrowser.find_element_by_id('gs_cit1').click()
Bib = Nbrowser.find_element_by_link_text('BibTeX').click()
cit_pg = browser.find_element_by_css_selector('''body > pre''')
cites.append(cit_pg.text)
Nbrowser.close()
return cites
然后我定义了一份论文清单
l = ['Sustainability and the measurement of wealth: further reflections']
但是当我运行它时,我收到以下错误:
<ipython-input-309-4208af266f79> in APAcite(papers)
8 Nbrowser.get(address)
9 Nbrowser.find_element_by_link_text('Cite').click()
---> 10 APA = Nbrowser.find_element_by_id('gs_cit1').click()
11 Bib = Nbrowser.find_element_by_link_text('BibTeX').click()
12 cit_pg = browser.find_element_by_css_selector('''body > pre''')
。 。
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"id","selector":"gs_cit1"}
虽然我检查页面并确保此ID存在 id for selected element
另一点,当我在函数外运行代码并且没有for
循环时,我没有收到任何错误,而且工作正常!
你能帮忙吗?
答案 0 :(得分:0)
只需添加以下代码行
即可Nbrowser.implicitly_wait(20)
之后
Nbrowser.get(address)
基本上你移动得太快了。单击后,文本显示需要一些时间,并且您尝试找到不存在的ID(尚未!)
修复代码后,我得到了以下输出
可持续性和财富衡量:进一步的反思 [&#39; @article {arrow2013sustainability,\ n title = {可持续性与衡量财富:进一步思考},\ n作者= {Arrow,Kenneth J和Dasgupta,Partha和Goulder,Lawrence H和Mumford,Kevin J和Oleson,Kirsten},\ n journal = {环境与发展经济学},\ n volume = {18},\ n number = {4},\ n pages = {504--516},\ n year = {2013} ,\ n publisher = {剑桥大学出版社} \ n}&#39;]