繁体   English   中英

BeautifulSoup通过里面的文本找到一个div标签

[英]BeautifulSoup find a div tag by the text inside

我有这个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来获得“测试”值。

谢谢你的帮助。

您必须导入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"
             ")"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM