2015-02-11 69 views
1

現在我用美麗的湯來解析html頁面。但是有時我find_all得到的結果小於頁面中的數字。例如,這個頁面http://www.totallyfreestuff.com/index.asp?m=0&sb=1&p=5有18個標題跨度。但是當我使用下面的代碼時,它只有兩個!有人可以告訴我爲什麼。先謝謝你!beautifulsoup find_all錯誤?

soup = BeautifulSoup(page, 'html.parser') 
hrefDivList = soup.find_all("span", class_ = "headline") 
#print hrefDivList 
print len(hrefDivList) 
+0

你怎麼了'page'?你的代碼打印18在我的情況。 – 2015-02-11 08:28:34

+0

我使用urllib獲取頁面,並將頁面打印出來。它在頁面上有18個標題跨度。但我的代碼只有兩個。你能分享你的代碼給我嗎? – Keang1013 2015-02-11 09:34:31

+0

檢查答案。 – 2015-02-11 09:46:51

回答

1

您可以嘗試爲Beautifulsoup使用不同的解析器。

import requests 
from bs4 import BeautifulSoup 

url = "<your url>" 
r = requests.get(url) 

soup = BeautifulSoup(r.content, 'lxml') 
hrefDivList = soup.find_all("span", attrs={"class": "headline"}) 
print len(hrefDivList) 
0

你可以嘗試CSS選擇,讓您的生活更輕鬆

hrefDivList = soup.select("span.headline") 
#print hrefDivList 
print len(hrefDivList) 

或者你也可以直接遍歷每個跨度文本

for every_span in soup.select("span.headline"): 
    print(every_span.text) 
相關問題