如何解决返回 Nonetype 错误 Python 的局部变量
我正在尝试构建一个函数,用于循环访问网站的后续页面并从每个页面抓取数据。我收到以下 nonetype 错误,我不知道如何解决它:
如果不是 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))
任何帮助将不胜感激。
解决方法
如果 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"
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。