2016-05-15 62 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

大声笑,设想它,直到我打开开发人员工具,并看看请求,然后匆忙关闭开发人员工具:) –