Python 使用Beautifulsoup旋转<;ul>&书信电报;李>;并将无界项添加到列表中

Python 使用Beautifulsoup旋转<;ul>&书信电报;李>;并将无界项添加到列表中,python,xml,xml-parsing,beautifulsoup,Python,Xml,Xml Parsing,Beautifulsoup,我想将我的文本放在下面,并将其组合成如下所示的对象列表。我知道这可以用BeautifulSoup来完成 正在启动html文本: input_string = "peanut butter1 <ul id="ul0002" list-style="none">peanut butter2 <li id="ul0002-0001" num="0000">2.0 to 6.0 mg of 17&#x3b2;-estradiol and</li>

我想将我的文本放在下面,并将其组合成如下所示的对象列表。我知道这可以用BeautifulSoup来完成

正在启动html文本:

input_string = "peanut butter1
<ul id="ul0002" list-style="none">peanut butter2
    <li id="ul0002-0001" num="0000">2.0 to 6.0 mg of 17&#x3b2;-estradiol and</li>
    <li id="ul0002-0002" num="0000">0.020 mg of ethinylestradiol;</li>
    <br>
    <li id="ul0002-0003" num="0000">0.25 to 0.30 mg of drospirenone and</li>peanut butter3
</ul>peanut butter4"

其思想是迭代
美化组
文本项并检查父项:

from pprint import pprint
from bs4 import BeautifulSoup


input_string = """peanut butter1
<ul id="ul0002" list-style="none">peanut butter2
    <li id="ul0002-0001" num="0000">2.0 to 6.0 mg of 17&#x3b2;-estradiol and</li>
    <li id="ul0002-0002" num="0000">0.020 mg of ethinylestradiol;</li>
    <br>
    <li id="ul0002-0003" num="0000">0.25 to 0.30 mg of drospirenone and</li>peanut butter3
</ul>peanut butter4"""

soup = BeautifulSoup(input_string, 'html.parser')

result = []
for item in soup.find_all(text=True):
    value = item.strip()
    if value:
        parent = 'no tag' if item.parent.parent is None else item.parent.name
        result.append([parent, value])

pprint(result)

希望能有所帮助。

事实上,我昨天确实阅读了所有文档,但没有找到答案。因此,我认为可以用正则表达式来解决这个问题。当提到beautifulsoup时,我知道我不知道答案,因为我已经失败了。所以我问了这个问题。我认为SOF的目的是问这样的问题。如果不是,我们应该通读所有可用的文档并解决所有问题,那么这个网站真的没有用。
x = input_string.findAll()
list1 = []
for y in x:
    list1.append([y.renderContents(), y.name])
from pprint import pprint
from bs4 import BeautifulSoup


input_string = """peanut butter1
<ul id="ul0002" list-style="none">peanut butter2
    <li id="ul0002-0001" num="0000">2.0 to 6.0 mg of 17&#x3b2;-estradiol and</li>
    <li id="ul0002-0002" num="0000">0.020 mg of ethinylestradiol;</li>
    <br>
    <li id="ul0002-0003" num="0000">0.25 to 0.30 mg of drospirenone and</li>peanut butter3
</ul>peanut butter4"""

soup = BeautifulSoup(input_string, 'html.parser')

result = []
for item in soup.find_all(text=True):
    value = item.strip()
    if value:
        parent = 'no tag' if item.parent.parent is None else item.parent.name
        result.append([parent, value])

pprint(result)
[['no tag', u'peanut butter1'],
 [u'ul', u'peanut butter2'],
 [u'li', u'2.0 to 6.0 mg of 17\u03b2-estradiol and'],
 [u'li', u'0.020 mg of ethinylestradiol;'],
 [u'li', u'0.25 to 0.30 mg of drospirenone and'],
 [u'br', u'peanut butter3'],
 ['no tag', u'peanut butter4']]