2013-08-07 63 views
-1

所以我想用美麗的湯來得到this page的內容。我想創建一個包含所有CSS顏色名稱的字典,這看起來像是一種快速簡單的方法來訪問它。所以很自然,我做了快速的基礎:Beautifulsoup url加載錯誤

from bs4 import BeautifulSoup as bs 
url = 'http://www.w3schools.com/cssref/css_colornames.asp' 
soup = bs(url) 

由於某種原因,我只得到URL在體內的p標籤,就是這樣:

>>> print soup.prettify() 
<html> 
<body> 
    <p> 
    http://www.w3schools.com/cssref/css_colornames.asp 
    </p> 
</body> 
</html> 

爲什麼不會BeautifulSoup給我訪問我需要的信息?

+0

沒有,beautifulsoup工作就好 – Stephan

回答

2

Beautifulsoup does 不是爲您加載一個URL。

您需要傳遞完整的HTML頁面,這意味着您需要先從URL加載它。下面是一個使用樣本urllib2.urlopen function以實現:

from urllib2 import urlopen 
from bs4 import BeautifulSoup as bs 

source = urlopen(url).read() 
soup = bs(source) 

現在,您可以提取的顏色就好了:

css_table = soup.find('table', class_='reference') 
for row in css_table.find_all('tr'): 
    cells = row.find_all('td') 
    if cells: 
     print cells[0].a.text, cells[1].a.text 
+0

哇,我就知道!這是我的一個嚴重的腦部放屁。謝謝! –

+0

所以這回答我的問題......但美麗的湯現在解析不正確......它會得到除我需要的部分以外的所有東西。我需要的部分顯示爲:'tdalign =「left」> ahref =「/ tags/ref _ colormixer。asp?colorbottom = EEE 8 AA & colortop = FFFFFF」> M ix/a >/td >'...爲什麼是這樣的 –

+0

聽起來像你正在循環文本,而不是; python字符串是字符序列,循環遍歷字符串,並且可以處理來自該文本的每個單獨字符。 –