繁体   English   中英

BeautifulSoup:找不到包含文本的标签

[英]BeautifulSoup: Can't find Tag with text it contains

使用以下页面上包含的文本查找标签时遇到问题:链接到 web 页面

我正在尝试使用以下代码查找彭博和路透社代码。 使用 cssSelector 我试过:

css_selector = 'tr:has(> td:contains("Bloomberg Code"))'
my_tag: Tag = my_soup.select_one(css_selector)

使用 find 我试过:

my_tag = my_soup.find(lambda t: t.Tag == 'td' and re.findall('Bloomberg Code', t.text, flags=re.I))

他们都返回了大量的 Html 代码,它确实以标签“tr”开头,但与我期望的不匹配:

<tr>
    <td style="padding-top:5px">- Bloomberg Code : </td>
    <td style="padding-left:10px;padding-top:5px" align="left">&nbsp;FLTR:ID</td>
</tr>

我认为问题可能是 Beautifulsoup 将其视为可导航字符串,但是当我检查为 my_tag 找到的结果类型时,它显示: class 'bs4.element.Tag'

感谢帮助最好的

您需要一个用户代理 header 并想要包含搜索词的td的相邻兄弟td

from bs4 import BeautifulSoup as bs
import requests

search_strings = ['Bloomberg Code :',' Reuters Code :']
r = requests.get('https://www.marketscreener.com/FLUTTER-ENTERTAINMENT-PLC-59029817/company/', headers = {'User-Agent':'Mozilla/5.0'})
soup = bs(r.content, 'lxml')

for search_string in search_strings:
    node = soup.select_one(f'td:contains("{search_string}") + td')
    if node is None:
        print(f'{search_string} not found')
    else:
        print(node.text)

暂无
暂无

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

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