Разбор HTML с использованием Python и Beautiful Soup - PullRequest
3 голосов
/ 04 июля 2011
<div class="profile-row clearfix"><div class="profile-row-header">Member Since</div><div class="profile-information">January 2010</div></div>
<div class="profile-row clearfix"><div class="profile-row-header">AIGA Chapter</div><div class="profile-information">Alaska</div></div>
<div class="profile-row clearfix"><div class="profile-row-header">Title</div><div class="profile-information">Owner</div></div>
<div class="profile-row clearfix"><div class="profile-row-header">Company</div><div class="profile-information">Mad Dog Graphx</div></div>

Я использую Beautiful Soup, чтобы добраться до этой точки в HTML-коде.Теперь я хочу выполнить поиск по коду и получить данные, такие как январь 2010, Аляска, Владелец и Mad Dog Graph.Все эти данные имеют один и тот же класс, но они имеют разные переменные, такие как «Member Since», «AIGA Chapter» и т. Д.Как я могу найти участника с и затем получить январь 2010 года. И сделать то же самое для остальных 3 полей?

1 Ответ

3 голосов
/ 04 июля 2011
>>> from BeautifulSoup import BeautifulSoup
>>> soup = BeautifulSoup('''<div class="profile-row clearfix"><div class="profile-row-header">Member Since</div><div class="profile-information">January 2010</div></div>
... <div class="profile-row clearfix"><div class="profile-row-header">AIGA Chapter</div><div class="profile-information">Alaska</div></div>
... <div class="profile-row clearfix"><div class="profile-row-header">Title</div><div class="profile-information">Owner</div></div>
... <div class="profile-row clearfix"><div class="profile-row-header">Company</div><div class="profile-information">Mad Dog Graphx</div></div>
... ''')
>>> for row in soup.findAll('div', {'class':'profile-row clearfix'}):
...  field, value = row.findAll(text = True)
...  print field, value
... 
Member Since January 2010
AIGA Chapter Alaska
Title Owner
Company Mad Dog Graphx

Конечно, вы можете делать все, что захотите, с помощью field и value, например, создавать с ними диктовку или сохранять их в базе данных.

Если есть другие элементы div или другой текстузлы внутри div "profile-row clearfix", вам нужно сделать что-то вроде field = row.find('div', {'class':'profile-row-header'}).findAll(text=True) и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...