Python “如何修复”;TypeError:描述列表中的每一项都必须是AccessDescription“;

Python “如何修复”;TypeError:描述列表中的每一项都必须是AccessDescription“;,python,web-scraping,beautifulsoup,python-requests,Python,Web Scraping,Beautifulsoup,Python Requests,我是一个python新手,试图通过BeautifulSoup解析网站数据。然而,每当我运行get请求时,我都会遇到这个特定的错误 我下载了html文件并用它来编写处理过程,但我无法让在线更新工作。我是根据youtube指南说的: 导入请求 从bs4导入BeautifulSoup source=请求。get('https://rd2l.gg/seasons/bLikBZrRH/divisions/HJSzO_xoM/teams)。文本 soup=BeautifulSoup(源,“lxml”) 打印

我是一个python新手,试图通过BeautifulSoup解析网站数据。然而,每当我运行get请求时,我都会遇到这个特定的错误

我下载了html文件并用它来编写处理过程,但我无法让在线更新工作。我是根据youtube指南说的:

导入请求
从bs4导入BeautifulSoup
source=请求。get('https://rd2l.gg/seasons/bLikBZrRH/divisions/HJSzO_xoM/teams)。文本
soup=BeautifulSoup(源,“lxml”)
打印(右文本)
runfile('C:/Users/Akono/Documents/RD2L第18季/RD2L DB/scrap和csv.py',wdir='C:/Users/Akono/Documents/RD2L第18季/RD2L DB')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
runfile('C:/Users/Akono/Documents/RD2L第18季/RD2L DB/scrap和csv.py',wdir='C:/Users/Akono/Documents/RD2L第18季/RD2L DB')
文件“C:\Users\Akono\Anaconda3\lib\site packages\spyder\u kernels\customize\spyderrcustomize.py”,第827行,在runfile中
execfile(文件名、命名空间)
文件“C:\Users\Akono\Anaconda3\lib\site packages\spyder\u kernels\customize\spyderrcustomize.py”,第110行,在execfile中
exec(编译(f.read(),文件名,'exec'),命名空间)
文件“C:/Users/Akono/Documents/RD2L第18季/RD2L DB/scrape和csv.py”,第27行,在
source=请求。get('https://rd2l.gg/seasons/bLikBZrRH/divisions/HJSzO_xoM/teams)。文本
文件“C:\Users\Akono\Anaconda3\lib\site packages\requests\api.py”,第75行,在get中
返回请求('get',url,params=params,**kwargs)
文件“C:\Users\Akono\Anaconda3\lib\site packages\requests\api.py”,第60行,在请求中
return session.request(method=method,url=url,**kwargs)
文件“C:\Users\Akono\Anaconda3\lib\site packages\requests\sessions.py”,第533行,在请求中
resp=自我发送(准备,**发送)
文件“C:\Users\Akono\Anaconda3\lib\site packages\requests\sessions.py”,第646行,在send中
r=适配器.send(请求,**kwargs)
文件“C:\Users\Akono\Anaconda3\lib\site packages\requests\adapters.py”,第449行,在send中
超时=超时
文件“C:\Users\Akono\Anaconda3\lib\site packages\urllib3\connectionpool.py”,第600行,在urlopen中
分块=分块)
文件“C:\Users\Akono\Anaconda3\lib\site packages\urllib3\connectionpool.py”,第343行,在请求中
自我验证连接(连接)
文件“C:\Users\Akono\Anaconda3\lib\site packages\urllib3\connectionpool.py”,第839行,位于\u validate\u conn
连接
文件“C:\Users\Akono\Anaconda3\lib\site packages\urllib3\connection.py”,第355行,在connect中
cert=self.sock.getpeercert()
文件“C:\Users\Akono\Anaconda3\lib\site packages\urllib3\contrib\pyopenssl.py”,第363行,在getpeercert中
“subjectAltName”:获取SubjectAlt名称(x509)
文件“C:\Users\Akono\Anaconda3\lib\site packages\urllib3\contrib\pyopenssl.py”,第213行,位于get\u subc\u alt\u名称中
ext=cert.extensions.get\u extension\u用于类(
文件“C:\Users\Akono\AppData\Roaming\Python37\site packages\cryptography\utils.py”,第170行,在内部
结果=func(实例)
文件“C:\Users\Akono\AppData\Roaming\Python37\site packages\cryptography\hazmat\backends\openssl\x509.py”,第127行,扩展名
self.\u后端,self.\u x509
文件“C:\Users\Akono\AppData\Roaming\Python37\site packages\cryptography\hazmat\backends\openssl\decode\u asn1.py”,第252行,解析
值=处理程序(后端、外部数据)
文件“C:\Users\Akono\AppData\Roaming\Python37\site packages\cryptography\hazmat\backends\openssl\decode\u asn1.py”,第400行,在“decode\u authority\u information\u access”中
返回x509.AuthorityInformationAccess(访问描述)
文件“C:\Users\Akono\AppData\Roaming\Python37\site packages\cryptography\x509\extensions.py”,第286行,在uu init中__
定义报告(自我):
TypeError:描述列表中的每个项都必须是AccessDescription

我想你想要这样的东西

res1= requests.get(url)    
f_html = utils.format_html(res1.text)

def format_html(self, html_str):
        """
        format html page source, BeautifulSoup makes sure formatted output source is valid for parsing
        :param html_str: html page source string
        :return: formatted html
        """
        soup = bs4.BeautifulSoup(html_str, 'html5lib')
        f_html = soup.prettify()
        logging.debug(f'Formatted html::: {f_html}')
        return f_html

什么是打印(r.text)?听起来你添加了代码的一部分,这还不足以理解你的问题。请详细说明。它只是用来打印页面的原始html。我只是想检查我是否从请求中得到了什么。我不知道这行代码会如何影响此问题,因为解释器已经由于
source=requests.get('https://rd2l.gg/seasons/bLikBZrRH/divisions/HJSzO_xoM/teams“).text
代码行。当您使用
soup=BeautifulSoup(源代码,'lxml')时,这里有一个很好的例子(我在下面发布了部分代码)
类似的东西,你必须安装python模块。我确信你已经安装了bs4。尝试安装
lxml
是的,我已经安装了lxml。它适用于下载的页面。它只是不适用于从网站获取源代码。不,我的兄弟,我复制了这个示例,并在中用url替换了url变量问题,它仍然给出相同的错误消息。我添加了所有导入,并将函数定义放在代码上方。它仍然显示TypeError:描述列表中的每一项都必须是AccessDescription我尝试了您的代码,这对我来说非常有效。我只是将
print(r.text)
替换为
print(soup)
source=requests.get('https://rd2l.gg/seasons/bLikBZrRH/divisions/HJSzO_xoM/teams').text soup=BeautifulSoup(源,'lxml')打印(soup)
这是我将代码更改为的内容。尝试运行它。这是错误回溯:似乎是获取页面本身的某种问题。顺便说一句,感谢您的努力,我在其他任何地方都找不到这个问题的任何答案。为了更详细地说明,我正在尝试用open('teams.html',encoding=“utf8”)替换
作为teams\u file:soup=BeautifulSoup(teams\u file,'lxml')
这样,soup不是从文件打开的,而是从这个url打开的,它看起来像是特定于您的工作环境。`file“C:\Users\Akono\AppData\Roaming\Python37\site packages\crypto
res1= requests.get(url)    
f_html = utils.format_html(res1.text)

def format_html(self, html_str):
        """
        format html page source, BeautifulSoup makes sure formatted output source is valid for parsing
        :param html_str: html page source string
        :return: formatted html
        """
        soup = bs4.BeautifulSoup(html_str, 'html5lib')
        f_html = soup.prettify()
        logging.debug(f'Formatted html::: {f_html}')
        return f_html