我想在html代码中找到一个特定的标签,如果有2个标签那么我怎样才能获得第二个标签的内容而不是第一个标签,其中的汤.find(id ='contact1')在这里是示例html代码
<table align="center"><th id="contact">STUDENT ID</th><th id="contact">NAME</th><th id="contact"> Phone </th><th id="contact"> NO.</th>
<p align="center" style="display:compact; font-size:18px; font-family:Arial, Helvetica, sans-serif; color:#CC3300">
</p><tr>
<td id="contact1">
2011XXA4438F </td> <td id="contact1"> SAM SRINIVAS KRISHNAGOPAL</td> <td id="contact1"> 9894398690 </td> <td id="contact1"> </td>
</tr>
</table>
我想要做的是将'2011XXA4438F'作为字符串提取,我该怎么做?
答案 0 :(得分:4)
<td id="contact1">
是第一个标记,其ID为"contact1"
。要获得它,那么soup.find
就是您所需要的:
>>> print soup.find(id='contact1').text.strip()
2011XXA4438F
如果您正在寻找其他代码,那么您需要使用find_all
:
>>> print soup.find_all(id='contact1')
[<td id="contact1">
2011XXA4438F </td>, <td id="contact1"> SAM SRINIVAS KRISHNAGOPAL</td>, <td id="contact1"> 9894398690 </td>, <td id="contact1"> </td>]
答案 1 :(得分:1)
我很确定.find只为您提供与查询匹配的第一个元素。请尝试使用.findAll。
在此处查看文档 - http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html
编辑:误读你的帖子。只是为了完全理解。你想总是找到第二次出现“id ='contact1'”吗?
可能有更优雅的东西,但你可以做类似
的事情v = soup.find_all(id='contact1')
length = 0
for x in v:
length += 1
if length = 2: #set number according to which occurrence you want.
#here is the second occurrence of id='contact1'.
以上内容完全未经过测试,只是直接写在这里。我刚刚开始使用python,有些可能是一种更有效的方法:-)
答案 2 :(得分:0)
您也可以这样操作:
target = soup.find(“ table”,{“ id”:“ contact1”})