2014-09-02 4 views
6

Я использую python2.7.6, urllib2 и BeautifulSoupПолучить содержимое DIV по идентификатору с BeautifulSoup

извлечь HTML из веб-сайта и магазина в переменной.

Как я могу показать только содержимое html div с идентификатором с помощью beautifulsoup?

<div id='theDiv'> 
<p>div content</p> 
<p>div stuff</p> 
<p>div thing</p> 

будет

<p>div content</p> 
<p>div stuff</p> 
<p>div thing</p> 

ответ

11

Регистрация элементы DIV тега .contents:

from bs4 import BeautifulSoup 

data = """ 
<div id='theDiv'> 
    <p>div content</p> 
    <p>div stuff</p> 
    <p>div thing</p> 
</div> 
""" 

soup = BeautifulSoup(data) 
div = soup.find('div', id='theDiv') 
print ''.join(map(str, div.contents)) 

гравюр:

<p>div content</p> 
<p>div stuff</p> 
<p>div thing</p> 
+0

Это, кажется, работает! вы можете объяснить, что происходит с 'print '' .join (map (str, div.contents))' – user8028

+0

@ user8028 уверен, 'content' фактически содержит все дочерние теги, которые могут быть представлены в виде строки, или как экземпляр класса 'Tag'. Применение 'map (str, ...)' помогает отбрасывать каждый дочерний элемент в строку. Надеюсь, это поможет. – alecxe

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