美丽的汤表没有出现

时间:2016-05-15 03:25:28

标签: python beautifulsoup

我正在练习网络报废,我决定查看我最常使用的网站Flash Score,然后很快就遇到了麻烦。

我的代码如下:

from bs4 import BeautifulSoup
import urllib2

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

但是这会返回:

<div id="fscon">
<div class="preload pvisit" id="preload"><span>Loading ...</span></div>
</div>

当我看到包含所有信息的主表的网页时,而不是我在HTML中看到的内容。

1 个答案:

答案 0 :(得分: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()