三分醉博客
  • 首页
  • Affiliate Marketing
    • Adsense系列教程
    • Facebook广告投放
    • Youtube基础入门
  • 程序语言
  • 工具与技巧
  • 三分醉随笔
  • 联系方式
  1. 首页
  2. 程序语言
  3. 正文

PYppeteer的替代品PuPHPeteer和PyExecJS的尝试

2020年02月02日 3360点热度 6人点赞 0条评论

PYppeteer的原作者已经很久没更新了,提交上去的代码也没人整理,联系也联系不上,谷歌官方的Puppeteer已经更新了好几个版本,一些bug已经解决,以及很多新的功能,这些在当前python的库里都无法享受到,在网上偶尔看到其他的库,感觉也不错,值得尝试下。
20200216更新:已经有其他人接棒这个库了,新地址https://github.com/pyppeteer/pyppeteer ,是个好消息,如果实在是等不了这个新库的发展,可以先看看下面其他语言的调用方式。

PuPHPeteer

A Puppeteer bridge for PHP, supporting the entire API.https://github.com/nesk/puphpeteer
这个是库php版本的puppeteer,同pyppeteer一样都不是谷歌官方出的,这个库和pyppeteer的区别是他是通过php来连接puppeteer也就是依然需要node.js和puppeteer环境,而python版本的pyppeteer是纯python重写的,本身并不需要安装node.js。
好处是他只是连接,代码需要的不多,相当于加载对方,本身不涉及逻辑方面问题,解决了PYppeteer那种重写跟不上官方库的问题。
具体安装我就不写了,对于php和node.js实在是不熟悉。大家自行搜索吧,很多人已经写的很详细了。

PyExecJS

我最近也在学php但是毕竟没有python熟悉,看到上面的PuPHPeteer就想到,既然php可以连接puppeteer,那么python为什么不这样做呢。看了puPHPeteer的代码发现只有两个关键脚本PuppeteerConnectionDelegate.js和Puppeteer.php,看了下跟设想的一致,那么我们就可以用PyExecJS这个库,PyExecJS是一个可以加载JavaScript脚本同时也支持node.js的python第三方库,通过它就可以直接加载puppteeer的代码了,可以享受到最新版本的功能,只是这种加载方式不够优雅,但因为网页模拟在程序中占比本身就很小,通过这种加载方式来运行也没什么问题。
但是我并不会写node.js的代码,网上puppeteer的例子有很多,并且找到了https://github.com/zhentaoo/puppeteer-deep 这个puppeteer的例子库,把里面的稍微更改下加载到python里就可以了。

环境部署

安装Puppeteer

node.js环境就官网下载进行安装即可,我们直接说Puppeteer这个库的安装,由于安装它后需要下载一个chromium的浏览器,导致国内无法直接安装,有人写了适合国内的可以下载的版本,我们就使用这个命令进行安装即可。
npm install puppeteer-chromium-resolver --save

安装PyExecJS

pip install PyExecJS

编写python脚本

import execjs
# os.environ["EXECJS_RUNTIME"] = "Node" #我本机只有node.js,这里就不需要设置了。
# os.environ["NODE_PATH"] = os.getcwd()+"/node_modules"
# print(execjs.get().name)
#如果返回值: JScript
# 如果想要切换,用os.environ["EXECJS_RUNTIME"] = "XXX",如果刚安装完其他JS引擎,必须配置环境变量,还可能需要重启电脑或重启IDE。
# 如果windows上装有Node.js , 可以切换Node
print(execjs.get().name)
#返回值: Node.js (V8)
parser = execjs.compile("""
const puppeteer = require('puppeteer');
let request = require('request-promise-native');

//使用 puppeteer.launch 启动 Chrome
async function aa(canshu){
    var cc=123;
    return cc;
    const browser = await puppeteer.launch({
        headless: false,   //有浏览器界面启动
        slowMo: 100,       //放慢浏览器执行速度,方便测试观察
        args: [            //启动 Chrome 的参数,详见上文中的介绍
            '–no-sandbox',
            '--window-size=1280,960'
        ],
    });
    const page = await browser.newPage();
    await page.goto('https://www.so.com/s?ie=utf-8&fr=chrome_address_bar&src=home_chrome_address_bar&q='+canshu);
    await page.close();
    await browser.close();
}
""")
parser.call('aa','天气')

node.js的代码可以如上直接粘贴进去,也可以写成js文件用python进行打开,parser = execjs.compile(open('so.js',encoding='utf-8').read())
这样就可以了,如果浏览器无法打开,就看看是不是chromium下载失败,手动设置下自己的chrome路径(参考前面的文章,PYppeteer的chrome launch里面的设置)。如果真确定要这样使用,最好还是先运行一遍js文件,确认自身没问题再使用python进行加载。

本文由三分醉博客原创,转载请注明:https://www.sanfenzui.com/puphpeteer-and-pyexecjs-the-substitutes-of-pyppeteer.html

文章同步更新在知乎:三分醉 - 知乎

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: puPHPeteer pyexecjs node.js pyexecjs Puppeteer python Puppeteer
最后更新:2020年05月09日

三分醉

https://www.sanfenzui.com/about-me

点赞
< 上一篇
下一篇 >

文章评论

取消回复

广告
建了个群,想一起交流的可以加入下
2TB终身网盘
最新 热点 随机
最新 热点 随机
代群友招聘FB广告投手,谷歌投手 什么人必须买抗投诉服务器DMCA Ignored Hosting APP里面增加cloak的跑法可行性研究 Facebook Dating友缘是什么账号,能用来干什么? 【指纹浏览器系列】十、闲话聊一聊指纹浏览器的用途 【指纹浏览器系列】九、 编写自己的指纹浏览器以及指纹信息的来源
goland配合wsl2直接调用wsl2里go环境的方法 wordpress博客添加Adsense广告代码以及ads.txt文件的作用 更改已经安装的中文浏览器语言为英文 Youtube开启获利的条件及一些专有名词MCN、YPP的解释 聊一聊2018年2月TopBuzz大量K号,以及未来一年的操作方法 Facebook Dating友缘是什么账号,能用来干什么?
标签聚合
指纹浏览器 Adsense facebook广告投放 markdown插件 TrafficArmor pyppeteer 浏览器指纹 Youtube Adsense

COPYRIGHT © 2020 三分醉博客. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

关于我: about-me 友情链接: 三分醉的小伙伴们