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

PYppeteer的替代品PuPHPeteer和PyExecJS的尝试

2020年02月02日 4749点热度 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终身网盘
建了个群,想一起交流的可以加入下
最新 热点 随机
最新 热点 随机
解决中文Windows11编译chromium过程中报错gbk问题 什么人必须买抗投诉服务器DMCA Ignored Hosting APP里面增加cloak的跑法可行性研究 Facebook Dating友缘是什么账号,能用来干什么? 【指纹浏览器系列】十、闲话聊一聊指纹浏览器的用途 【指纹浏览器系列】九、 编写自己的指纹浏览器以及指纹信息的来源
【指纹浏览器系列】五、浏览器插件形式改变指纹 Youtube申请的Adsense能否用于网站以及Adsense账号种类详解 Afilter Tracker结合wordpress获取谷歌Adsense广告点击事件设置步骤 Adespresso批量管理Facebook广告投放 聊一聊2018年2月TopBuzz大量K号,以及未来一年的操作方法 wordpress迁移到pelican批量导出导入的方法_ubuntu平台
标签聚合
指纹浏览器 markdown插件 Youtube Adsense 浏览器指纹 Adsense pyppeteer facebook广告投放 TrafficArmor

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

THEME KRATOS MADE BY VTROIS

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