首页 > 解决方案 > 删除从 find_all 返回的空列表

问题描述

我遇到了一个我无法解决的错误,尽管有类似的问题,但没有一个解决方案能帮我解决这个问题,所以我决定问这个问题:

我正在尝试在用户传记中为电子邮件抓取网站,如果 UserInfo 包含它应该返回的电子邮件,但我收到的是一个空列表 []。

我搜索了几个答案以摆脱空列表,但没有一个成功

以下是部分代码:

email_list = []
email=None
    while email == None:
        if soup.find_all(class_="UserInfo "):
            for my_tag in soup.find_all(class_="UserInfo "):
                emails = re.findall(EMAIL_REGEX, my_tag.text)
                print (emails)
                if emails != []:  # if tag is empty
                    if emails:
                        email = emails[0]
                        print(email)
                       email_list.append(email)
                    print(email_list, "1")
            break
        else:
            email=None
            print("None 1 in User Info")

这是 HTML 的一部分: UserInfo 类可以重复,但它们都可能缺少电子邮件:

<div class="UserInfo ">
<div>
<div class="ReadMore">text</div>
<a class="UserInfo-readMoreOrLessText">Read Less</a>
</div>
</div>

我尝试了以下但没有奏效:

                email = [x for x in emails if x]
                print(email)

它回来了

[]

我也试过

                if not emails:  # if tag is empty
                    emails.decompose()
                    print(emails)

但是回来了

AttributeError: 'list' object has no attribute 'decompose'

标签: pythonbeautifulsoup

解决方案


如果您设置emailsNoneifemails是一个空列表怎么办。

emails = None if not emails else emails
if not emails:
    break
# Other logic here.

推荐阅读