私は、Python/Seleniumを使用してWebサイトを削り取ろうとしていて、部分的にJSで構築されたリンクやものを持っています。私の場合、私はこのようなルックスを取得したいリンク:1は、単に直接このURLをこすりすることはできませんので、以下のようにhttp://www.somesite.de/blah/ {{LINK_ID}}Python 3 webscraping issue(JSに関する)
は、私のPythonのコードは次のとおりです。
def URL_from_JS (URL):
driver = webdriver.PhantomJS(executable_path=r'C:\###\phantomjs-2.1.1-windows\bin\phantomjs.exe')
driver.get(URL)
link = driver.find_element_by_xpath('//a[@title="Zum Expose"]')
new_URL = link.get_attribute('href')
print(new_URL) #for testing reasons
driver.close()
return new_URL
これは動作しますしかし、JSコードは明らかに実行されていません。なぜなら、結果は上記とまったく同じです(すなわち、http://www.somesite.de/blah/ {{link_ID}})。要素が表示されるのを待っているのは、タイムアウトエラーだけです。 {{link_ID}}は、外部の.jsファイルで使用される変数を参照します。この変数は、HTMLコードの上にいくつかの行をインポートします。
インポートしたJavascriptコードを手動で実行する必要がありますか?私のコードが意図したとおりに動作しない理由を全く知りません...
ありがとうございました!
'JS'ファイルから' Python'コードにどのように文字列を送りますか? – Andersson
本当にあなたの質問を理解していない:私はストリングvom JSをPythonに送信しません。ほとんどの場合、JSコードはPythonでdriver.execute_scriptを使用して実行されますが、Seleniumの仕組みを理解する上では、これは実際には不要です。 – Boandlkramer
ok .... '{{link_ID}}'はどこから来ますか? 'href =" http://www.somesite.de/blah/{{link_ID}} "' ' – Andersson