【问题标题】:Find next div tag in beautiful soup在美丽的汤中找到下一个 div 标签
【发布时间】:2020-06-22 19:37:26
【问题描述】:

关于python中美汤的问题

我有一个类似的 HTML

<div class="content">Somedata</div>
<div class="content">Somedata</div>
<div class="content">Qualification</div>
<div class="content">THE DATA I WANT</div>
<div class="content">Somedata</div>
<div class="content">Somedata</div>

相同的 div 标签再次重复

在这种情况下: 不,我会或任何独特的标签,都包含 ---only div 标签---

如何获得资格后的“我想要的数据”文本 提前致谢

【问题讨论】:

    标签: python beautifulsoup next


    【解决方案1】:
    txt = '''
    <div class="content">Somedata</div>
    <div class="content">Somedata</div>
    <div class="content">Qualification</div>
    <div class="content">THE DATA I WANT</div>
    <div class="content">Somedata</div>
    <div class="content">Somedata</div>'''
    
    soup = BeautifulSoup(txt, 'html.parser')
    
    print(soup.select_one('div:contains("Qualification") ~ div').text)
    

    打印:

    THE DATA I WANT
    

    或者:

    print(soup.find(text="Qualification").find_next().text)
    

    或者:

    print(soup.find(lambda t: t.find_previous() and t.find_previous().text == 'Qualification').text)
    

    编辑:要遍历 &lt;div&gt;s,您可以使用简单的 for 循环:

    for item in souped.find_all(lambda t: t.name == 'div' and t.text == 'Qualification'):
        print(item.find_next().text)
    

    【讨论】:

    • 如何获得准确的单词 "QUALIIFACTION" ,例如 div 只包含字母限定
    • @O.T.BHarmonyLimited 您可以使用print(soup.find(lambda t: t.name=='div' and t.text=='Qualification').find_next().text)。这将找到带有文本Qualification&lt;div&gt;,然后获取下一个元素的文本。
    • 谢谢你成功了 :),find all 不工作,他们有什么方法我能像 find all 一样得到所有,非常感谢。再次非常感谢,例如,souped.find_all(lambda t: t.name == 'div' and t.text == 'Qualification').find_next() 当我在上面尝试时,它显示 `` ResultSet 对象没有属性'找下一个'。 ```
    • @O.T.BHarmonyLimited 您需要迭代在.find_all() 中找到的元素。例如for item in soup.find_all(...):
    • 嗨,我试过这样for item in souped.find_all(lambda t: t.name == 'div' and t.text == 'Qualification').find_next(): realqualification= [item],但是它的显示错误属性find_next() not found,我可以得到帮助
    【解决方案2】:

    你可以试试:

    from bs4 import BeautifulSoup
    
    html_doc ='''<div class="content">Somedata</div>
    <div class="content">Somedata</div>
    <div class="content">Qualification</div>
    <div class="content">THE DATA I WANT</div>
    <div class="content">Somedata</div>
    <div class="content">Somedata</div>'''
    
    soup = BeautifulSoup(html_doc, 'lxml')
    
    result = soup.find_all("div", class_="content")[3].text
    
    print(result)
    

    输出将是:

    THE DATA I WANT
    

    import re
    soup = BeautifulSoup(html_doc, 'lxml')
    print(soup.find(text=re.compile('^THE DATA I WANT$')))
    

    print(soup.find(string="Qualification").find_next().text)
    

    【讨论】:

    • 谢谢你的回答:),如果位置不固定,我怎么能得到我想要的数据,但它总是在资格 div 下?提前致谢
    猜你喜欢
    • 2017-12-05
    • 2021-12-07
    • 1970-01-01
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 2018-07-18
    • 1970-01-01
    相关资源
    最近更新 更多