如何使用BeautifulSoup按标签分割文档?

时间:2017-04-27 12:51:19

标签: python parsing beautifulsoup

该文件如下:

<div class="eh">...</div>
...
<section class="g">...</section> <!-- div 1 -->
...
<section class="g">...</section> <!-- div 1 -->
...
<div class="eh">...</div>
...
<section class="g">...</section> <!-- div 2 -->
...

所有这些标签都在同一树级别上。我需要将文档分割成div的数量组,并将部分附加到相应的div。

预期结果是[div1, section1, section2, div2, section3]之类的列表。它们按照它们出现在HTML中的顺序显示。

我目前的代码:

bs.find_all(
  ['div', 'section'], 
  {'class': ['eh', 'g']})

如果div和section具有不同的类,则此方法有效。

1 个答案:

答案 0 :(得分:0)

我认为这会让你最大程度地实现目标。

from bs4 import BeautifulSoup

soup = BeautifulSoup(open('temp.htm').read(), 'lxml')
tags = soup.find_all(['div','section'])

for tag in tags:
    print (tag.name, tag)

输出:

div <div class="eh">...</div>
section <section class="g">...</section>
section <section class="g">...</section>
div <div class="eh">...</div>
section <section class="g">...</section>
section <section class="g">...</section>
section <section class="g">...</section>
section <section class="g">...</section>

请注意,汤中的项目按照soup.find_all中列出的标记的顺序输出。