2016-12-30 35 views
1

私は助けが必要です。私はいくつかの数字をウェブサイトから削り取ろうとしています(下のコードのリンクを参照)。 JavaScriptを使用してWebサイトがロードされているので、まずセレンを使用してページをロードし、xlmlに渡してデータを解析します。Seleniumとlxmlを使ったPython Webスクレイピング

私が使用していたコードは以下の通りです:

from selenium import webdriver 
from lxml import html 
import time 

url = "http://sebgroup.com/large-corporates-and-institutions/prospectuses-and-downloads/rates/swap-rates" 
xpath = '//*[@id="doc"]/table[2]/tbody/tr[3]/text()' 

chrome_path = "my_path" 
browser = webdriver.Chrome(chrome_path) 
browser.get(url) 
time.sleep(10) 

html_source = browser.page_source 

tree = html.fromstring(html_source) 
text = tree.xpath(xpath) 
print (text) 

私が直接私のブラウザかかわらず、私はソースコードの数字を見ることができるページを見てください。しかし、私がセレンを使って同じことをするとき、私が見るソースコードは異なっています。私はこれにウェブサイトが何らかの反掻き取りソフトウェアを持っているかどうか疑問に思っていましたか?とにかくまだデータを取得するには? (私は学術的な使用のためにそれらが必要です)。

+0

firefoxドライバを使用しようとしましたか? –

+0

親ページを解析するのではなく、iframe srcを使用してください... https://seb.se/pow/apps/swaprates/default.aspx – Archer

+1

xpath内でtbodyタグを使用しないでください。このタイプのタグは、ブラウザが何度か実行され、xpathの障害が発生します。 –

答えて

1

iframeの中にあるテーブルは、ページソースを取得する前に切り替えてください。以下を試してください:

chrome_path = "my_path" 
browser = webdriver.Chrome(chrome_path) 
browser.get(url) 
time.sleep(10) 
browser.switch_to.frame(browser.find_element_by_tag_name("iframe")) 
html_source = browser.page_source 
関連する問題