2013-08-07 3 views
-1

Итак, я пытаюсь получить содержание this page, используя красивый суп. Я хочу создать словарь всех названий цветов css, и это казалось бы быстрым и простым способом получить доступ к этому. Поэтому, естественно, я сделал быстрый основной:Ошибка загрузки загрузочного окна

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 - это последовательности символов, петля над строкой, и вы можете обрабатывать каждый отдельный символ из этого текста. –

Смежные вопросы