Python 如何使用BeautifulSoup搜索标签列表,列表中的一项具有属性?
有人知道如何在python中使用bs4来搜索多个标记,其中一个标记需要一个属性吗 例如,要搜索具有属性的一个标记的所有匹配项,我知道可以执行以下操作:Python 如何使用BeautifulSoup搜索标签列表,列表中的一项具有属性?,python,html,web-scraping,beautifulsoup,Python,Html,Web Scraping,Beautifulsoup,有人知道如何在python中使用bs4来搜索多个标记,其中一个标记需要一个属性吗 例如,要搜索具有属性的一个标记的所有匹配项,我知道可以执行以下操作: tr\u list=soup\u对象。find\u all('tr',id=True) 我知道我也能做到这一点: tag\u list=soup\u对象。查找所有(['a','b','p','li']) 但我不知道如何组合这两个语句,理论上这会给我一个列表,按照所有html标记的出现顺序,每个“tr”标记都有一个id html代码段如下所示:
tr\u list=soup\u对象。find\u all('tr',id=True)
我知道我也能做到这一点:
tag\u list=soup\u对象。查找所有(['a','b','p','li'])
但我不知道如何组合这两个语句,理论上这会给我一个列表,按照所有html标记的出现顺序,每个“tr”标记都有一个id
html代码段如下所示:
<tr id="uniqueID">
<td nowrap="" valign="baseline" width="8%">
<b>
A_time_as_text
</b>
</td>
<td class="storyTitle">
<a href="a_link.com" target="_new">
some_text
</a>
<b>
a_headline_as_text
</b>
a_number_as_text
</td>
</tr>
<tr>
<td>
<br/>
</td>
<td class="st-Art">
<ul>
<li>
more_text_text_text
<strong>
more_text_text_text
<font color="228822">
more_text_text_text
</font>
</strong>
more_text_text_text
</li>
<li>
more_text_text_text
<ul>
<li>
more_text_text_text
</li>
</ul>
</li>
</ul>
</td>
</tr>
<tr>
</tr>
作为文本的时间
标题作为文本
作为文本的数字
-
更多\u文本\u文本\u文本
更多\u文本\u文本\u文本
更多\u文本\u文本\u文本
更多\u文本\u文本\u文本
-
更多\u文本\u文本\u文本
-
更多\u文本\u文本\u文本
提前谢谢大家的帮助 我建议您将
tr
添加到所需的标记列表中,然后检查循环中是否存在id
属性:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, "html.parser")
for tag in soup.find_all(['a', 'b', 'p', 'li', 'tr']):
if tag.name != 'tr' or (tag.name == 'tr' and tag.get('id')):
print tag.name
对于html,这将显示:
tr
B
A.
B
锂
锂
锂
注意,如果您实际上试图获取
a
b
p
和li
标签,这些标签位于tr
中,且存在id
,则以下方法更合适:
for tr in soup.find_all('tr', id=True):
for tag in tr.find_all(['a', 'b', 'p', 'li']):
print tag.name, tag.get_text(strip=True)
这将给你:
b A_时间作为文本
一段文字
b a_标题作为_文本
您能举一个您正在尝试刮取的html的例子吗?谢谢你,这是一个受保护的网站,我不想有任何麻烦,所以我在文本中加入了一些明显的占位符:a_time_text a_headline_text a_text a_number_text- more_text_text_textmore_text_text_text_text_textmore_text_text_text_text_text_text_text
- more_text_text_text_text_text_text_text