Python 使用BeautifulSoup提取时保留某些HTML标记

Python 使用BeautifulSoup提取时保留某些HTML标记,python,beautifulsoup,web-crawler,screen-scraping,extraction,Python,Beautifulsoup,Web Crawler,Screen Scraping,Extraction,我有以下HTML: <div class="description">Item 1<br>Item 2<br></div> 我得到的是项目1项目2 如何取而代之的是项目1项目2,即div标签之间的内容,包括br两个标签?您可以使用: container = BeautifulSoup('<div class="description">Item 1<br>Item 2<br></div>', 'lx

我有以下HTML:

<div class="description">Item 1<br>Item 2<br></div>
我得到的是
项目1项目2

如何取而代之的是
项目1
项目2
,即
div
标签之间的内容,包括
br
两个标签?

您可以使用:

container = BeautifulSoup('<div class="description">Item 1<br>Item 2<br></div>', 'lxml')
desc_items = ''.join(str(x) for x in container.find('div', class_='description').contents)
print(desc_items)
# Item 1<br/>Item 2<br/>

您只需使用
'.join()
将它们连接起来即可。但是,像

这样的标记类型是
,因此
join
将引发
TypeError
错误,因为它希望所有项目都是
str
类型。因此,您必须首先将其转换为
str

是否执行
descriptionItems=container.find('div',attrs={'class':'description'})
单独运行?确实可以,但我得到了完整的标签,没有任何内容被剥离:
项目1
项目2
,运行得出奇地好。我甚至不需要第一行。谢谢
container = BeautifulSoup('<div class="description">Item 1<br>Item 2<br></div>', 'lxml')
desc_items = ''.join(str(x) for x in container.find('div', class_='description').contents)
print(desc_items)
# Item 1<br/>Item 2<br/>
['Item 1', <br/>, 'Item 2', <br/>]