我正在尝试使用BeautifulSoup在li
中提取div
个信息。
以下是我正在使用的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
循环来遍历列表,但我不知道如何做到这一点。 (实际上,列表不仅仅是三个条目)。
我遇到的另一个问题是如何让汤来区分第一个<li>name<li>
和第二个<li>fullname<li>
标签。
非常感谢您的帮助!
答案 0 :(得分:1)
您可以对FirebaseAuth mAuth;
mAuth = FirebaseAuth.getInstance();
String uid = mAuth.getCurrentUser().getUid();
使用嵌套式推理:
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')]
答案 1 :(得分:0)
假设此div中的列表始终遵循上述格式,您可以通过选择器进行搜索。这将生成一个交替names
和fullnames
的列表。
In [1]: from bs4 import BeautifulSoup as bs
In [2]: soup = bs(html, 'html.parser')
In [3]: target = soup.select('div ul li')
# search by selector
In [4]: target
Out[4]:
[<li>name1</li>,
<li>fullname1</li>,
<li>name2</li>,
<li>fullname2</li>,
<li>name3</li>,
<li>fullname3</li>]
In [5]: names = [n.text for n in target[::2]]
# select every second element starting at the beginning of the list
In [6]: names
Out[6]: [u'name1', u'name2', u'name3']
In [7]: fullnames = [f.text for f in target[1::2]]
# select every second element starting at the second element of the list
In [8]: fullnames
Out[8]: [u'fullname1', u'fullname2', u'fullname3']