为了账号安全,请及时绑定邮箱和手机立即绑定

为什么soup.find('title') 在BeautifulSoup 中什么都不返回?

为什么soup.find('title') 在BeautifulSoup 中什么都不返回?

收到一只叮咚 2021-08-05 16:49:59
我正在使用 requests 和 beautifulsoup 来解析 url 的响应内容。但是当我尝试解析响应并soup.find('title') 在 Beautifulsoup 中找到标题时,它没有返回任何内容。甚至没有错误。它只是什么都不做。上面的打印语句soup.find() 正在执行。但不是 if 和 if 之后的那个。import requests, osfrom bs4 import BeautifulSouplis=[    'https://oxhp-member-elr.uhc.com/Member/MemberPortal/'    ]for element in lis:    resp = requests.get(element)    if resp.status_code == 200:        cont = resp.content.decode('UTF-8')        try:            soup = BeautifulSoup(cont, "html.parser")            print('Now')            if soup.findAll('title')[0].get_text() is None:                print('Hi')            print('after if')            print(element.ljust(element_length), resp.status_code, soup.find('title').text)        except:            pass我soup.find('title').text也试过' 。但这也不起作用。任何人都可以让我知道我的代码有什么问题吗?
查看完整描述

1 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

您正在使用 try 块处理异常并且什么都不做(只是pass),这就是您没有看到错误消息的原因。如果发生不在 try 块内的错误,默认行为是中断代码并打印堆栈跟踪。如果在 try 块内发生错误,代码将跳转到 except 块,接下来发生什么由您决定。不会自动打印错误信息。


如果您尝试打印错误或在循环内添加 Soup 对象的打印语句,您将看到以下内容:


    try:

        soup = BeautifulSoup(cont, "html.parser")

        print('Now')


        # Print the soup object

        print(soup)

        if soup.findAll('title')[0].get_text() is None:

            print('Hi')

        print('after if')

        #print(element.ljust(element_length), resp.status_code, soup.find('title').text)

    except Exception as error:

        # Handle the exception with some information.

        print(error)

        pass

给出输出


Sorry, we are unable to process your request at this time.

对于打印语句,错误消息如下所示:


list index out of range

基本上,您无法解析 URL,因此您尝试使用[0]if 语句中的访问空数组,这会引发错误。


查看完整回答
反对 回复 2021-08-05
  • 1 回答
  • 0 关注
  • 350 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信