【问题标题】:Confusion with bs4 and html [closed]与bs4和html混淆[关闭]
【发布时间】:2021-09-26 14:45:47
【问题描述】:

我是 python 新手(大约 3 周)。所以我开始学习 bs4,目前正在尝试将“Xin lỗi! trang bạn tìm kiếm không tồn tại”。使用 bs4 将 HTML 转换为变量。我阅读了 bs4 文档,但我很困惑,因为英语不是我的主要语言,而且我还没有学习 HTML..

<div class="title">Xin lỗi! trang bạn tìm kiếm không tồn tại.</div>

这是我正在练习的源代码中的编码

我设法使用.find_all(class_="title") 在 html 上找到了该部分,幸好只得到了一个结果,就是上面的那个。

所以我要做的是验证源代码中是否存在这个特定的字符串,然后退出程序。我的想法是将它分配给一个变量,如果 =="Xin lỗi! trang bạn tìm kiếm không tồn tại。"然后退出程序。

如果你们有更简单的想法,请分享:)

【问题讨论】:

    标签: python html beautifulsoup


    【解决方案1】:

    .find_all

    将所有结果作为列表返回。如果您知道会找到多个结果并且您需要获取每个结果的文本,请执行以下操作:

    from bs4 import BeautifulSoup
    
    html  = '<div class="title">Xin lỗi! trang bạn tìm kiếm không tồn tại.</div>'
    
    soup = BeautifulSoup(html, "html.parser")
    
    my_text = "Xin lỗi! trang bạn tìm kiếm không tồn tại."
    title_list = soup.find_all(class_="title")
    
    for title in title_list:
        if title.text == my_text:
            print ("text founded")
    
        else:
            print ("text not founded")
    

    或者,如果您知道只有结果符合您的搜索条件,您可以使用 find()

    代码如下:

    from bs4 import BeautifulSoup
    
    html  = '<div class="title">Xin lỗi! trang bạn tìm kiếm không tồn tại.</div>'
    
    soup = BeautifulSoup(html, "html.parser")
    
    my_text = "Xin lỗi! trang bạn tìm kiếm không tồn tại."
    
    text = soup.find(class_="title").text
    
    if text == my_text:
        print ("text founded")
    
    else:
        print ("text not founded")
    

    阅读此thread 以了解有关 find() 和 find_all() 之间差异的更多信息

    【讨论】:

      猜你喜欢
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 2015-01-17
      • 1970-01-01
      • 2017-02-28
      • 2023-03-31
      • 2013-11-04
      相关资源
      最近更新 更多