2016-12-12 104 views
0

我使用Python 3.5和BS4BeautifulSoup(BS4)未找到所有標籤

下面的代碼將不檢索從指定網站中的所有表。該頁面有14個表,但代碼的返回值是2.我不知道發生了什麼。我手動檢查了HTML並找不到原因,說明爲什麼它不起作用。每張桌子似乎沒有什麼特別之處。

import bs4 
import requests 

link = "http://www.pro-football-reference.com/players/B/BradTo00.htm" 

htmlPage = requests.get(link) 
soup = bs4.BeautifulSoup(htmlPage.content, 'html.parser') 
all_tables = soup.findAll('table') 
print(len(all_tables)) 

發生了什麼事?

編輯:我應該澄清。如果我檢查湯變量,它包含我期望看到的所有表。我怎麼無法用findAll方法從湯中提取這些表?

+0

檢查表是否正在通過Ajax加載。 – mushfiq

+0

這個頁面使用JavaScript來顯示數據,但可能所有的數據都是HTML格式,但是評論過。你可以嘗試使用BS來查找'comment'標籤,或者嘗試使用字符串函數(或正則表達式)來查找'' - 也許你可以在BS中使用這個字符串。 – furas

回答

2

這個頁面是由javascript渲染的,如果你在你的瀏覽器中禁用javascrip,你會注意到這個頁面只有兩個表。 我建議在這種情況下使用硒。

+0

我曾經假設在加載完所有的javascript和ajax請求之後,我已經取回了html。當我檢查了'湯'變量時,所有的表格都在那裏。這並不能證明我在ajax請求發出後正在檢索數據嗎? – wjrhee

+0

請求無法做到這一點,但如果你使用硒或類似的東西,你會得到一個包含所有表的湯,這證明你在頁面呈現後獲得數據javascrip –

+0

我仍然感到困惑,因爲我看到湯裏所有的桌子。但無論如何,使用硒工作。謝謝! – wjrhee