Python 使用BeautifulSoup提取时保留某些HTML标记
我有以下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
<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/>]