我有一个无序列表的网页,我想把它们变成一个pandas数据帧,作为NLP工作流程的第一步。
import pandas as pd
from bs4 import BeautifulSoup
html = '''<html>
<body>
<ul>
<li>
Name
<ul>
<li>Many</li>
<li>Stories</li>
</ul>
</li>
</ul>
<ul>
<li>
More
</li>
</ul>
<ul>
<li>Stuff
<ul>
<li>About</li>
</ul>
</li>
</ul>
</body>
</html>'''
soup = BeautifulSoup(html, 'lxml')
目标是让每个顶级列表变成一个数据帧,看起来像这个输出:
0 1 2
0 Name Many Stories
1 More null null
2 Stuff About null
我尝试使用以下代码获取所有列表项(包括子列表)
target = soup.find_all('ul')
但它会返回双倍输出:
[<li>
Name
<ul>
<li>Many</li>
<li>Stories</li>
</ul>
</li>, <li>Many</li>, <li>Stories</li>, <li>
More
</li>, <li>Stuff
<ul>
<li>About</li>
</ul>
</li>, <li>About</li>]
真的迷失在这里。谢谢。