2016-05-15 101 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") 

然而,這將返回:

​​

相反的我時,我已經看到了,其中包括了所有的主表中的網頁的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

獎勵積分,如果你能使用的要求去做;) –

+0

@PadraicCunningham我知道你已經準備了答案和使用要求所有這19個小時的問題被張貼後的代碼: )雖然有趣的情況!謝謝。 – alecxe

+0

大聲笑,設想它,直到我打開開發人員工具,並看看請求,然後匆忙關閉開發人員工具:) –