2016-12-09 4 views
0

私は現在、ウェブサイトからデータをスクラップしようとしていますが、その下のコードを使用すると何らかの理由で空の配列「[]」が返されます。私はそれの背後にある推論を把握していないようです。生成されたhtmlをチェックすると\ t \ r \ nがたくさんあるようです。問題が自分のコードでどうなっているかわかりません。BeautifulSoup空の配列を返す

url = "http://www.hkex.com.hk/eng/csm/price_movement_result.htm?location=priceMoveSearch&PageNo=1&SearchMethod=2&mkt=hk&LangCode=en&StockType=ALL&Ranking=ByMC&x=51&y=6" 
html = requests.get(url) 
soup = BeautifulSoup(html.text,'html.parser') 
rows = soup.find_all('tr') 
print rows 

私はまた、非「.textセクション」、代わりに 『html.parser』の 『lxmlのを』解析しようとしましたが、同じ結果になってしまっています。

EDIT:回避策が見つかりました。セレンを使用してページを開き、代わりにソースを取得してください。

url = "http://www.hkex.com.hk/eng/csm/price_movement_result.htm?location=priceMoveSearch&PageNo=1&SearchMethod=2&mkt=hk&LangCode=en&StockType=ALL&Ranking=ByMC&x=51&y=6" 
driver = webdriver.Firefox() 
driver.get(url) 
f = driver.page_source 
soup = BeautifulSoup(f,'html.parser') 
rows = soup.find_all('tr') 

答えて

0

このページでは、サーバーからデータを取得するためにjavascriptを使用しています。このリンクを使用してchromeのdev_toolsにデータをリクエストすると、必要な情報を得るためにこのリンクをリクエストできます。

http://www.hkex.com.hk/eng/csm/ws/Result.asmx/GetData?location=priceMoveSearch&SearchMethod=2&LangCode=en&StockCode=&StockName=&Ranking=ByMC&StockType=ALL&mkt=hk&PageNo=1&ATypeSHEx=&AType=&FDD=&FMM=&FYYYY=&TDD=&TMM=&TYYYY= 

私はサイトをこすりすることができるだろうセレンドライバを使用した場合セレン

0

文書には真のHTML行はありません。行はJavaScriptによって動的に生成されます。 BeautifulSoupはJavaScriptを実行できません。

+0

を使用する必要はありませんか?最良の解決策は何ではないでしょうか。編集:ちょうどそれがありがとう作品を試して – kimpster

+0

この議論によると、はいできます。自分で試したことはありません。 http://stackoverflow.com/questions/14529849/python-scraping-javascript-using-selenium-and-beautiful-soup – DyZ

0

html.text変数の内容を表示すると、コンテンツが動的に生成され、有効な要素がないことがわかります。

関連する問題