Google Scholarのページから引用を取得するために、このコードをいくつかクリックしてシミュレーションしました。forループ内でセレン(find_by_id)メソッドが機能しない
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
ループせずにコードを実行したときに、私はすべてのエラーを取得しないとそれはうまく動作します!
助けてもらえますか?
おかげで多くのことを固定した後、出力の下に取得。..チャームのように働いた! –
暗黙の待機を使用しないでください。それは悪い習慣です。代わりに明示的な待機を追加します。その要素がクリック可能になるのを待ってからクリックしてください。 – JeffC