2016-05-15 4 views
2

私はウェブスクラップを練習していましたが、私が最も使用するサイトであるFlash Scoreをチェックアウトしてすぐに問題に遭遇しました。美しいスープテーブルが表示されない

次のように私のコードは次のとおりです。

from bs4 import BeautifulSoup 
import urllib2 

soup = BeautifulSoup(urllib2.urlopen('http://www.flashscore.com/').read()) 
print soup.find("div", id = "fscon") 

しかし、これが返されます。

​​

をする代わりに、私はすべてのメインテーブルを含んでいるWebページを見ているとき、私はHTMLで見るものを情報。

答えて

2

非常に「動的」なので、この特定のページはウェブスクレイピングを開始する最も簡単なケースではありません。追加のリクエストとJavaScriptの実行によってページが完全にロードされます。

最も高いレベルのオプションは、実際のブラウザを使用してページを読み込み、完全な読み込みを待ち、HTMLを解析することです。 selenium使用例を作業する:あなたが要求を使用してそれを行うことができれば

from bs4 import BeautifulSoup 
from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 


driver = webdriver.Firefox() 
driver.maximize_window() 

wait = WebDriverWait(driver, 10) 

url = 'http://www.flashscore.com/' 
driver.get(url) 

# wait for the complete page load 
wait.until(EC.invisibility_of_element_located((By.ID, "preload"))) 

# parse the HTML 
soup = BeautifulSoup(driver.page_source, "html.parser") 
print(soup.find("div", id = "fscon")) 

driver.close() 
+0

ボーナスポイントを、私はあなたが質問が投稿されたすべてのこれらの19時間後にリクエストを使用しています答え、コードを準備してきた知っている) –

+0

@PadraicCunningham: )しかし面白いケース!ありがとう。 – alecxe

+0

笑、私は開発ツールを開いて要求を見てから、急いで開発ツールを閉じてしまいました:) –

関連する問題