python - BeautifulSoup:如何提取 <div> 中的 <li> 信息

标签 python html web-scraping beautifulsoup html-lists

我正在尝试提取li div内的信息使用 BeautifulSoup。

这是 div 的示例代码我正在工作:

<div class="list">
<a href="/name1" target="_blank" title="name1">
<img alt="name1" src="https://img.url.com/name1"/>
<ul>
<li>name1</li>
<li>fullname1</li>
</ul>
</a>
<a href="/name2" target="_blank" title="name2">
<img alt="name2" src="https://img.url.com/name2"/>
<ul>
<li>name2</li>
<li>fullname2</li>
</ul>
</a>
<a href="/name3" target="_blank" title="name3">
<img alt="name3" src="https://img.url.com/name3"/>
<ul>
<li>name3</li>
<li>fullname3</li>
</ul>
</a>
</div>

我想做的是从两个 li 中提取“姓名”和“全名”文本。

我想我需要创建一个 for循环来迭代列表,但我不知道如何做到这一点。 (实际上,该列表不仅仅是三个条目)。

我遇到的另一个问题是如何让 soup 区分第一个 <li>name<li>第二个 <li>fullname<li>标签。

我们将非常感谢您的帮助!

最佳答案

您可以将嵌套推导式与 BeautifulSoup 结合使用:

from bs4 import BeautifulSoup as soup
_div = soup(content, 'html.parser').find('div', {'class':'list'})
results = [[i.text for i in b.find_all('li')] for b in _div.find_all('ul')]

输出:

[['name1', 'fullname1'], ['name2', 'fullname2'], ['name3', 'fullname3']]

关于python - BeautifulSoup:如何提取 <div> 中的 <li> 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50557840/

相关文章:

python - 添加到标签时 x 像素后的新行 (tkinter)

python - 在 python 中只保留 int

python - 复制 Pandas 列表中的元素

python - 如何将 Django 模型表限制为一行

javascript - 为什么我的页面在页面加载后突然跳转(滚动)到一半?

html - 如何避免粘性元素的高度影响内容?

asp.net - 如何防止我的 ASP.NET 网站被屏幕抓取?

javascript - 如何通过 Beautiful Soup 抓取 href 中的文本?

javascript - Safari 删除表单标签

python - 使用 selenium python 复制文本区域