requests-html模块报错解决记录

使用requests-html的render方法出错

第一次使用Render方法时,会出现urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host=‘storage.googleapis.com’, port=443): Max retries exceeded with url: /chromium-browser-snapshots/Win/575458/chrome-win32.zip (Caused by SSLError(SSLError(“bad handshake: Error([(‘SSL routines’, ‘tls_process_server_certificate’, ‘certificate verify failed’)])”)))错误提示。

这是因为:调用render 方法启动pyppeteer,pyppeteer需要与浏览器(chromium)进行交互,第一次使用时pyppeteer没有绑定Chromium的话,会从新下载一个Chrome浏览器。

由于其指定的路径被墙,没有科学上网或者SS/SSR之类的,就会出现下载错误从而导致方法中断。

实际上,可以使用系统上原来装有的Chrome,在requests-html源代码
如C:\Users\XXX\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\requests_html.py)的
第714行:

原句:

self._browser = await pyppeteer.launch(ignoreHTTPSErrors=not(self.verify), headless=True, args=self.__browser_args)

在此增加:executablePath =‘chrome的安装路径’
如本电脑chrome安装路径为’C:/Program Files (x86)/Google/Chrome/Application/chrome.exe’,
则最终代码为:

self._browser = await pyppeteer.launch(ignoreHTTPSErrors=not(self.verify), headless=True, args=self.__browser_args,executablePath ='C:/Program Files (x86)/Google/Chrome/Application/chrome.exe')

注:“\”需替换为“/”或使用 r’…’

本文参考:
https://www.cnblogs.com/ruhai/p/11318133.html
https://www.cnblogs.com/zhouze/p/11508894.html
https://www.cnblogs.com/xiaoaiyiwan/p/10776493.html
https://www.cnblogs.com/quanquan616/p/11335267.html

你可能感兴趣的:(Requests)