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

我正在使用 requests 和 beautifulsoup 来解析 url 的响应内容。


但是当我尝试解析响应并soup.find('title') 在 Beautifulsoup 中找到标题时,它没有返回任何内容。甚至没有错误。


它只是什么都不做。上面的打印语句soup.find() 正在执行。但不是 if 和 if 之后的那个。


import requests, os

from bs4 import BeautifulSoup

lis=[

    '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也试过' 。但这也不起作用。


任何人都可以让我知道我的代码有什么问题吗?


收到一只叮咚
浏览 351回答 1
1回答

斯蒂芬大帝

您正在使用 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 语句中的访问空数组,这会引发错误。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python