【问题标题】:Local variable returning Nonetype Error Python返回Nonetype错误Python的局部变量
【发布时间】:2021-08-09 16:45:50
【问题描述】:

我正在尝试构建一个函数来循环访问网站的后续页面并从每个页面中抓取数据。我收到以下非类型错误,我不知道如何解决它:

如果不是 page.find('a', {'class': 'btn btn-default current disabled'}): AttributeError: 'NoneType' 对象没有属性 'find'

from bs4 import *
import time
import pandas as pd
import pickle
import html5lib
from requests_html import HTMLSession

s = HTMLSession()
url = "https://cryptoli.st/lists/fixed-supply"


def get_data(url):
    r = s.get(url)
    global soup
    soup = BeautifulSoup(r.text, 'html.parser')
    return soup
    


def get_next_page(data):
    page = soup.find('ul', {'class': 'pager'})
    if not page.find('a', {'class': 'btn btn-default current disabled'}):
        url = 'https://cryptoli.st/lists/fixed-supply' + \
            str(page.find('li', {'class': 'paginate_button'}).find(
                'a')[{'class': 'btn btn-default next'}])
        return url
    else:
        return


data = get_data(url)
print(get_next_page(soup))

任何帮助将不胜感激。

【问题讨论】:

    标签: attributeerror nonetype


    【解决方案1】:

    来自BeautifulSoup docs

    如果 find() 找不到任何东西,则返回 None:

    print(soup.find("nosuchtag"))
    # None
    

    这意味着很可能是这样的:

    soup.find('ul', {'class': 'pager'})
    

    返回无。确保您尝试解析的站点中存在此类元素。可能是静态 HTML 不包含它,而列表是动态填充的。

    确实,如果在 chrome 中你转到 view-source:https://cryptoli.st/lists/fixed-supply,你会发现任何地方都没有 <ul class="pager"

    【讨论】:

    • 非常感谢!
    猜你喜欢
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 2014-04-12
    • 2023-04-02
    • 2013-03-12
    相关资源
    最近更新 更多