2014-03-02 141 views
1

我想獲得跨度中的文本。我已經檢查了,但我不明白的問題爲什麼這BeautifulSoup結果[]?

from bs4 import BeautifulSoup 
import urllib.request 
import socket 

searchurl = "http://suchen.mobile.de/auto/search.html?scopeId=C&isSearchRequest=true&sortOption.sortBy=price.consumerGrossEuro" 
f = urllib.request.urlopen(searchurl) 
html = f.read() 
soup = BeautifulSoup(html) 
print(soup.findAll('span',attrs={'class': 'b'})) 

結果是[],爲什麼呢?

+1

你有一個空列表'[]''因爲findAll'沒有發現任何東西。 – jonrsharpe

+1

沒有'span'標籤的屬性類值爲'b'。 – falsetru

+0

我有class = b的跨度。我認爲問題是返回是一個字符串表,我必須迭代 –

回答

1

看着相關網站,您的搜索結果會出現一個空的列表,因爲有沒有跨度,等級值爲b。 BeautifulSoup不會像瀏覽器那樣傳播CSS。另外,你的urllib請求看起來不正確。看看這個網站,我認爲你想抓取classlabel所有的跨度,雖然當網站不是我的母語時很難。這裏的是你會如何去做:

from bs4 import BeautifulSoup 
import urllib2 # Note urllib2 

searchurl = "http://suchen.mobile.de/auto/search.html?scopeId=C&isSearchRequest=true&sortOption.sortBy=price.consumerGrossEuro" 
f = urllib2.urlopen(searchurl) # Note no need for request 
html = f.read() 
soup = BeautifulSoup(html) 

for s in soup.findAll('span', attrs={"class":"label"}): 
    print s.text 

這給出了所列出的網址:

Farbe: 
Kraftstoffverbr. komb.: 
Kraftstoffverbr. innerorts: 
Kraftstoffverbr. außerorts: 
CO²-Emissionen komb.: 
Zugr.-lgd. Treibstoffart: