求助, pyppeteer 的使用,卡在 chromium_downloader 环节,请各位高手支招

2019-07-26 15:34:57 +08:00
 pppguest3962

在 pccharm 安装 requests-html,目前已经装好了 requests-html
在第一次使用的时候,pyppeteer 还是 requests-html 会有个自动下载安装 chromium,
直接自动安装是不成功的,
在报错信息里面看到(因为太困,昨晚没有及时保存报错信息,这里贴不出来)
动手去看看

C:\Users\Administrator\AppData\Local\Programs\Python\Python36\Lib\site-packages\pyppeteer\chromium_downloader.py  

看到:

DEFAULT_DOWNLOAD_HOST = 'https://storage.googleapis.com'  

这个就有高墙,直接去不了,根据网上建议,给 chromium_downloader.py 里的 urllib3 加梯
我这么做的:

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'
    }
    proxy = urllib3.ProxyManager('http://192.168.89.31:7070', headers=headers)#自己的虫洞地址


    # with urllib.PoolManager() as http:#这是原句
    with urllib3.PoolManager() as proxy:#改成这个
        # Get data from url.
        # set preload_content=False means using stream later.
        # data = http.request('GET', url, preload_content=False)#这是原句
        data = proxy.request('GET', url, preload_content=False)#改成这个使用虫洞

然后又报了个 http ssl 的错误,再根据网上的建议,把

DEFAULT_DOWNLOAD_HOST = 'https://storage.googleapis.com'

改成普通 http:

DEFAULT_DOWNLOAD_HOST = 'http://storage.googleapis.com'  

,然后下载进度条出来了,等了好久,似乎终于下载完了,chromium_downloader.py 就报了个错,大概说这个 rar/zip 文件是错误的,
瞬间就觉得心很累了,我没有更好的梯子,而且我刚才在公司试了一下,连进度条都不出来,一直卡在那里,看来是梯子质量不行也有关系
但是我直接拼接地址,用同一把梯子,用浏览器下载 https://storage.googleapis.com//chromium-browser-snapshots/Win_x64/575458/chrome-win32.zip
是完全没问题的,在 urllib3 里使用代理就很慢很慢了。。。

有不折腾的办法继续么? 最后想法是成功使用上 requests-html...

451 次点击
所在节点    Python
13 条回复
BBCCBB
2019-07-26 15:38:09 +08:00
用你本地的 chrome.exe 路径试试,
browser 里有个参数 executablePath
BBCCBB
2019-07-26 15:38:58 +08:00
或者将你下的 zip 包放到对应位置., 具体哪个位置不记得了..
pppguest3962
2019-07-26 15:43:18 +08:00
@BBCCBB 在使用 request-html 的时候,似乎也不需要也没有干预浏览器的位置吧?

```
session = HTMLSession()
r = session.get('https://www.baidu.com')
r.html.render()
print(r.html.html)

```
简单获取目标的 html 代码,似乎干预不了 chrome.exe 的行为?
wszgrcy
2019-07-26 15:44:29 +08:00
用 core,下国内镜像,按照 1 楼额来
pppguest3962
2019-07-26 15:46:09 +08:00
@BBCCBB 嗯嗯,我想也是的,但是我水平不够,看不出来下载的包应该怎么样拜访,才是被认为正确安装。。。^_^
pppguest3962
2019-07-26 15:48:47 +08:00
@wszgrcy croe ? 镜像? 不是很明白意思,我直接把 DEFAULT_DOWNLOAD_HOST = 'https://storage.googleapis.com'
改指向其它地方么?
huayunbin
2019-07-26 16:33:33 +08:00
试试这个
export PUPPETEER_DOWNLOAD_HOST=https://storage.googleapis.com.cnpmjs.org
npm i puppeteer
wszgrcy
2019-07-26 16:44:12 +08:00
@pppguest3962 npm 包里有 puppeteer 和 puppeteer-core,后者不带浏览器,需要自己手动下载,淘宝有镜像源,可以下载后指定路径
pppguest3962
2019-07-26 16:46:06 +08:00
@huayunbin 谢谢解答,不过我是在 win 的环境里,

试着套路硬来:

```
C:\Users\Administrator\AppData\Local\Programs\Python\Python36\Lib\site-packages\pyppeteer\chromium_downloader.py
```
的内容改为:
DEFAULT_DOWNLOAD_HOST = 'https://storage.googleapis.com.cnpmjs.org'

报错:
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='storage.googleapis.com.cnpmjs.org', port=443): Max retries exceeded with url: /chromium-browser-snapshots/Win_x64/575458/chrome-win32.zip (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",),))

把 https->http
报错也是一致的。。。
BBCCBB
2019-07-26 16:52:05 +08:00
这个百度能找到 pyppeteer 需要的浏览器包的位置的.
要么就挂个代理试试
dbow
2019-07-26 16:58:25 +08:00
在海外 vps 上下载, 然后把文件复制回来
qdzzyb
2019-07-26 18:53:23 +08:00
PUPPETEER_DOWNLOAD_HOST=https://npm.taobao.org/mirrors
pppguest3962
2019-07-27 10:24:17 +08:00
非常感谢楼上各位的热线解答,问题已经解决了,楼上各位的办法都是好主意~
顺便提一下解决的方法:
按 12 楼的方式解决最简便,只是要把 s 去掉,https->http
下载安装速度杠杠的。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/586459

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX