我有这种html格式
<tr>
<th>
<div>USING THIS TEXT</div>
</th>
<td>
<div class="plainlist">
<ul>
<li>
"GET THIS TEXT HERE"
<span>
" ("
<span class="bday"> "AND GET THIS TEXT HERE"
")"
</span>
</li>
</ul>
</div>
</td>
</tr>
我已经找到了如何使用find和id访问无序列表的方法,但是不确定当我想要的div没有id而是只有我可以使用的文本时怎么做。
如果有一个ID,则python代码为
test = soup.find(id="[SOME_ID]")
if test is not None:
ul = cast.find_next('ul')
for li in ul.findAll('li'):
if(li is not None):
print(li.text)
但是我不确定如何只知道div内的文本而不是id来获得“测试”值。
感谢您的帮助。
答案 0 :(得分:0)
您必须导入re模块才能按文本查找标签。尝试让我知道是否可行。
import bs4
import re
html_doc="""<html><tr>
<th>
<div>USING THIS TEXT</div>
</th>
<td>
<div class="plainlist">
<ul>
<li>
"GET THIS TEXT HERE"
<span>
" ("
<span class="bday"> "AND GET THIS TEXT HERE"
")"
</span>
</li>
</ul>
</div>
</td>
</tr></html>"""
soup = bs4.BeautifulSoup(html_doc, 'html.parser')
test=soup.find('div' , text=re.compile("USING THIS TEXT"))
if test is not None:
ul = test.find_next('ul')
for li in ul.findAll('li'):
if(li is not None):
print(li.text)
输出:
"GET THIS TEXT HERE"
" ("
"AND GET THIS TEXT HERE"
")"