Python:requests_html html 方法不起作用

问题描述

这可能(希望如此)是一个简单的初学者错误,但我找不到任何解释我做错的地方。

我想用 bs4 和 requests_html 为 yt-video 抓取一些内容。这两个库都已安装。但是,当我尝试运行代码时,它不起作用。 PyCharm 告诉我 r.html.render(sleep=1) 和soup = bs(r.html.html,"html.parser ") 是问题所在。任何人都可以快速查看一下并告诉我我可能做错了什么吗?

from bs4 import BeautifulSoup as bs
from requests_html import HTMLSession

video_id = "v8Yh_4oE-Fs"
video_root = "https://www.youtube.com/watch?v="
video_url = "".join((video_root,video_id))

session = HTMLSession()
r = session.get(video_url)
r.html.render(sleep=1)
soup = bs(r.html.html,"html.parser")

编辑:这是完整的错误消息。

[W:pyppeteer.chromium_downloader] 开始下载 Chrome。下载可能需要几分钟。回溯(最近一次调用):文件“C:\Program Files\Python\lib\site-packages\urllib3\contrib\pyopenssl.py”,第 488 行,在 wrap_socket cnx.do_handshake() 文件“C:\Program Files\Python\lib\site-packages\OpenSSL\SSL.py”,第 1934 行,在 do_handshake 中 self._raise_ssl_error(self._ssl,result) 文件“C:\Program Files\Python\lib\site-packages\OpenSSL\SSL.py”,第 1671 行,在 _raise_ssl_error _raise_current_error() 文件“C:\Program Files\Python\lib\site-packages\OpenSSL_util.py”,第 54 行,在 exception_from_error_queue 中 引发 exception_type(errors) OpenSSL.SSL.Error: [('SSL 例程','tls_process_server_certificate','证书验证失败')]

在处理上述异常的过程中,又发生了一个异常:

回溯(最近一次调用最后一次):文件“C:\Program Files\Python\lib\site-packages\urllib3\connectionpool.py”,第 677 行,在 urlopen chunked=chunked,文件“C:\Program Files\Python\lib\site-packages\urllib3\connectionpool.py”,第 381 行,在 _make_request 中 self._validate_conn(conn) 文件“C:\Program Files\Python\lib\site-packages\urllib3\connectionpool.py”,第 976 行,validate_conn conn.connect() 文件“C:\Program Files\Python\lib\site-packages\urllib3\connection.py”,第 370 行,在连接中 ssl_context=context,文件“C:\Program Files\Python\lib\site-packages\urllib3\util\ssl.py”,第 377 行,在 ssl_wrap_socket 返回 context.wrap_socket(sock,server_hostname=server_hostname) 文件“C:\Program Files\Python\lib\site-packages\urllib3\contrib\pyopenssl.py”,第 494 行,在 wrap_socket raise ssl.SSLError("bad handshake: %r" % e) ssl.SSLError: ("bad handshake: Error([('SSLroutines','tls_process_server_certificate','certificate verify Failed')])",)>

在处理上述异常的过程中,又发生了一个异常:

回溯(最近一次通话):文件“C:/Users/Administrator.WSW41/Documents/PycharmProjects/Youtubedata/try_out.py”,第 10 行,在 r.html.render(sleep=1) 文件“C:\Program Files\Python\lib\site-packages\requests_html.py”,第 586 行,在渲染中 self.browser = self.session.browser # 自动创建事件循环和浏览器 File "C:\Program Files\Python\lib\site-packages\requests_html.py",line 730,in browser self._browser = self.loop.run_until_complete(super().browser) File "C:\Program Files\Python\lib\asyncio\base_events.py",line 584,in run_until_complete 在浏览器中返回 future.result() 文件“C:\Program Files\Python\lib\site-packages\requests_html.py”,第 714 行 self._browser = await pyppeteer.launch(ignoreHTTPSErrors=not(self.verify),headless=True,args=self.__browser_args) 文件“C:\Program Files\Python\lib\site-packages\pyppeteer\launcher.py” ,第 306 行,启动中 return await Launcher(options,**kwargs).launch() File "C:\Program Files\Python\lib\site-packages\pyppeteer\launcher.py",line 119,in init download_chromium() 文件“C:\Program Files\Python\lib\site-packages\pyppeteer\chromium_downloader.py”,第 146 行,在 download_chromium extract_zip(download_zip(get_url()),DOWNLOADS_FOLDER / REVISION) 文件“C:\Program Files\Python\lib\site-packages\pyppeteer\chromium_downloader.py”,第 85 行,在 download_zip data = http.request('GET',url,preload_content=False) File "C:\Program Files\Python\lib\site-packages\urllib3\request.py",line 76,in request method,fields=fields,headers=headers,**urlopen_kw File "C:\Program Files\Python\lib\site-packages\urllib3\request.py",line 97,in request_encode_url 返回 self.urlopen(method,**extra_kw) File "C:\Program Files\Python\lib\site-packages\urllib3\poolmanager.py",line 336,in urlopen response = conn.urlopen(method,u.request_uri,**kw) File "C:\Program Files\Python\lib\site-packages\urllib3\connectionpool.py",line 765,in urlopen **response_kw 文件“C:\Program Files\Python\lib\site-packages\urllib3\connectionpool.py”,第 765 行,在 urlopen 中 **response_kw 文件“C:\Program Files\Python\lib\site-packages\urllib3\connectionpool.py”,第 765 行,在 urlopen 中 **response_kw 文件“C:\Program Files\Python\lib\site-packages\urllib3\connectionpool.py”,第 725 行,在 urlopen 方法,url,错误=e,_pool=self,_stacktrace=sys.exc_info()[2] 文件“C:\Program Files\Python\lib\site-packages\urllib3\util\retry.py”,第 439 行,递增 引发 MaxRetryError(_pool,error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='storage.googleapis.com',port=443): 最大重试次数超过 url: /chromium-browser-snapshots/ Win_x64/588429/chrome-win32.zip(由SSLError引起(SSLError(“握手错误错误([('SSL例程','tls_process_server_certificate','证书验证失败')])”))

进程以退出代码 1 结束

先谢谢你!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)