2013-04-27 6 views
0

Я разбираю несколько отдельных страниц с помощью BeautifulSoup.Обработка исключений с BeautifulSoup

Несколько страниц анализируются, и на определенном сайте становится ясно, что синтаксический анализ не выполняется.

Я ищу, чтобы извлечь следующий тег:

<span class="black20b">$27.99</span> 

Я использую следующий селектор, чтобы получить метку. В самом деле, я попробовал два разных них и получил те же результаты:

price = individual_page.find("span", {"class","black20b"}) 
price = ''.join(price.findAll(text=True)) 

я решил напечатать результат цены ДО джойн выполняются на несколько файлов, и это результат:

... 
Downloading: File... 
<span class="black20b">$7.79</span> 

Downloading: File... 
<span class="black20b">$27.99</span> 

Downloading: File... 
None 

Последний селектор возвращает «Нет». Проверка на конкретный случай, оказывается, что по разным причинам цвет окрашен по-разному. Другими словами, этот тег не существует.

Как я могу справиться с этим исключением?

+0

Каковы возможности других имен классов? Поскольку регулярное выражение, вероятно, является решением здесь – TerryA

+0

Класс может быть, в этом случае, по крайней мере, black20b или red13b. Можно ли это как-то справиться? Или это можно сказать, если он возвращает NONE, чтобы ничего не делать? – Dynelight

+0

Ну, чтобы он не печатал 'Нет', просто добавьте:' matching = individual_page.find («span», {«class», «black20b»}); если совпадение: price = matching' или что-то подобное – TerryA

ответ

2

Чтобы избежать вызова функции, если результат не является None:

price = individual_page.find("span", {"class","black20b"}) 
if price: 
    print ''.join(price.findAll(text=True)) 
Смежные вопросы