【问题标题】:Find a html tag using BeautifulSoup in Python在 Python 中使用 BeautifulSoup 查找 html 标签
【发布时间】:2013-09-18 23:57:36
【问题描述】:

我想在 html 代码中找到一个特定的标签,比如如果有 2 个标签,那么我怎样才能获得第二个标签的内容,而不是 soup.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”提取为字符串我该怎么做?

【问题讨论】:

    标签: python html django beautifulsoup


    【解决方案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,有些可能有更有效的方法:-)

    【讨论】:

    • 是的,我想要一种方法来找到第 n 次出现的 id=contact1 这可能吗?
    【解决方案2】:

    &lt;td id="contact1"&gt;first 标签,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>]
    

    【讨论】:

    • 当我使用上面的代码 soup.find(id='contact1').text.strip() 它返回给我 SAM SRINIVAS KRISHNAGOPAL 我不知道为什么会这样..
    • 根据你的回答有没有办法得到'SAM SRINIVAS KRISHNAGOPAL'..?
    【解决方案3】:

    你也可以这样做:
    target = soup.find("table", {"id": "contact1"})

    【讨论】:

    • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助、质量更好,并且更有可能吸引投票。
    猜你喜欢
    • 2020-10-05
    • 2023-04-04
    • 2021-11-17
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    相关资源
    最近更新 更多