Python爬虫之puppeteer搭建远程服务器
puppeteer的使用:
目前网上的大多数资料都是基于js进行开发,今天我们剑走偏锋,介绍python中针对该工具开发的第三方工具库pyppeteer,具体的api操作咱就不谈了,官网上有,不咋此赘述,我们直接阐述如何利用pyppeteer做一个远程浏览器服务程序。在该项目考虑到在项目的隔离性,我实在docker容器搭建的该服务端程序,首先首选你需要下载chrome-linux.zip,这是服务端程序必备的工具,好处是他不需要安装,直接解压放在你需要的目录即可(当然也有windows版本chrome-win.zip),其实服务端程序很简单,就一句话打开浏览器,让他一直处于监听状态就行了,就这么简单。
puppeteer各版本下载地址:https://mohen.blog.csdn.net/article/details/108363449
服务端
from datetime import datetime
import traceback
import asyncio
from pyppeteer import launch, connectasync def browser_init():executablePath_linux = "F:\\chrome-win32\\chrome.exe"try:await launch({"headless": False,"ignoreDefaultArgs": ['--enable-automation'],'executablePath': executablePath_linux,'args': [# '--disable-gpu=True',# '--disable-dev-shm-usage',# '--disable-setuid-sandbox',# '--no-first-run','--no-sandbox',#'--no-zygote','--remote-debugging-address=0.0.0.0','--remote-debugging-port=9222','--start-maximized', # 窗口最大化模式'--disable-infobars',]})except Exception as e:#trace = traceback.format_exc().replace("[", "(").replace("]", ")").replace("\n", "\t")print(str(e))if __name__ == '__main__':loop = asyncio.get_event_loop()loop.run_until_complete(browser_init())loop.run_forever()
对于代码不做过多赘述,参考官网api,即可看懂,我们lunch()中的几个字段 :
"headless":True ===> 使用无头模式启动浏览器
args:'--remote-debugging-address=0.0.0.0', '--remote-debugging-port=9222',这两个是自定义绑定服务器端ip地址和端口,方便客户端请求,以获取wsEndpoint.一旦设置了这两个参数,如果你再使用print(browser.wsEndpoint)语句打印wsEndpoint,是不可实现的,所以我们如何在接触不到的服务端程序的时候获取服务端浏览器的长链接地址呢?答案就是:
browserWSEndpoint = requests.get("http://127.0.0.1:19222/json/version").json().get("webSocketDebuggerUrl")
即可拿到所有该浏览器远程操作的所有参数。 当然重点就是wsEndpoint,拿到wsEndpoint后我们可以远程使用下面的函数进行远程连接
客户端
import asyncio
import requests
from pyppeteer import launch,connectasync def main(browserWSEndpoint):browserWSEndpoint = requests.get("http://127.0.0.1:9222/json/version").json().get("webSocketDebuggerUrl")# Windows 和 Linux 的目录不一样,情换成自己对应的executable文件地址browser = await connect({"browserWSEndpoint":browserWSEndpoint})page = await browser.newPage()await page.goto("https://www.baidu.com/")content = await page.content()print(content)await page.close()if __name__ == '__main__':browserWSEndpoint = requests.get("http://127.0.0.1:19222/json/version").json().get("webSocketDebuggerUrl")print(browserWSEndpoint)asyncio.get_event_loop().run_until_complete(main(browserWSEndpoint))
Python爬虫之puppeteer搭建远程服务器相关推荐
- 基于阿里云CentOS8搭建远程服务器
基于阿里云CentOS-8+宝塔面板搭建远程服务器 星光不问赶路人,时间不负有心人,最近做课程设计就是要用到服务器,自己花了一天时间去了解以及部署.记录一下.这篇文章一轻量服务器为例,云服务器类似. ...
- 如何用树莓派搭建远程服务器 (zerotier)
如何用树莓派搭建远程服务器 (zerotier) 文章目录 简述 什么是zerotier 安装 注册 树莓派端安装(linux类均可使用该方法) 安装软件 添加网络 配置自启动 安卓手机安装 添加网络 ...
- Python使用socketServer包搭建简易服务器过程详解
官方提供了socketserver包去方便我们快速的搭建一个服务器框架. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案 ...
- python探测端口_python检测远程服务器tcp端口的方法
本文实例讲述了python检测远程服务器tcp端口的方法.分享给大家供大家参考.具体如下: python检测远程服务器tcp端口的代码,这段代码可以用来做服务器监控实用 #!/usr/bin/env ...
- Git 使用篇二:搭建远程服务器
一般做一个私人的项目,不希望开源的,是不会放在GitHub上的,这个时候我们需要建里一个自己的Git远程服务器,方便小组成员开发. 这里以Centos云服务器为例: 第一步 如果自己的服务器没有git ...
- python爬虫挖掘平台搭建_一篇非常棒的安装Python及爬虫入门博文!
原标题:一篇非常棒的安装Python及爬虫入门博文! 一. 大数据及数据挖掘基础(私信小编007即可获取大量Python学习资料!) 第一部分主要简单介绍三个问题: 1.什么是大数据? 2.什么是数据 ...
- python 学习笔记二 搭建ftp服务器
这是一个系列,记录我python开发常用的代码,小常识,有些是参考网上代码,(讲的可能有点烂,求不要打脸,嘤嘤嘤~~)送给那些需要的人.可以相互交流,喜欢的加我吧. Wx: Lxp911221 这是自 ...
- Python爬虫之puppeteer之遇到的bug及解决方法
pyppeteer的问题 本身这个项目是非官方的,是基于谷歌官方puppeteer的python版本. 本来chrome就问题多多,puppeteer也是各种坑,加上pyppeteer是前两者的pyt ...
- python pptp模块_Ubuntu 搭建PPTP服务器
检查当前系统是否支持MPPE模块 sudo modprobe ppp-compress-18 && echo MPPE is ok 输出:MPPE is ok,则说明内核支持MPPE模 ...
最新文章
- python增删改查的框架_简单的Django框架增删改查操作
- python绘制影像组学训练集、测试集对应的ROC曲线以及瀑布图(rad-score 瀑布图)
- 使用WireShark简单分析ICMP报文
- ORACLE强大的令人发指
- Greenplum【环境搭建 04】使用GPKafka实现Kafka数据导入Greenplum数据库(扩展安装文件网盘分享)
- mysql 1045错误ODBC_MySQL ERROR 1045 (28000) 错误的解决办法
- java中service设计_JDBC中DAO+service设计思想
- 从U盘安装windows/linux操作系统
- [Xamarin.Android] 儲存資料於Windows Azure (转帖)
- iOS根据模型获取模型字段以及字段的类型(用于创建数据库的表)
- 如何 给给软件开发 添加 代理_如何从“菜鸟码农”变成“一线架构师”?
- 用php的ob_start()控制浏览器cache
- 计算机打印机端口号,网络打印机端口号.doc
- 【网站点击流数据分析】01-项目业务背景
- 算法——弗洛伊德算法(Floyd-Warshall)(图论)(c++)
- MacOS redis开机启动设置
- Web前端面试指导 四十 CSS3有哪些新特性
- linux下c语言调用mysql,Linux下C语言连接MySQL
- oracle tovarchar2_oracle to_char() 函数的使用, 数字转换为字符串各种格式总结
- 仅改变rowspan背景_真实的他们《王者荣耀》全英雄历史故事以及设定背景介绍...
热门文章
- 图像处理包magick - R版的PS - 学习笔记
- 为什么GEO2R/GEOquery的结果可能是错的?
- 开源︳Quicksilver for Mac(键盘启动工具)V1.6.1免费版
- 新建一个同名域能不能替换原域_能不能挣钱,从你最早设计猪场就已经决定了!...
- 第37课 神奇的大自然 《小学生C++趣味编程》
- 1.3编程基础之算术表达式与顺序执行 11 计算浮点数相除的余数
- 中希尔排序例题代码_十大经典排序算法最强总结
- python根据文件名打标签_使用python将图片按标签分入不同文件夹的方法
- 浏览器端判断当前设备的运行环境
- ThinkPHP6项目基操(2.Nginx配置虚拟域名及简化访问路径)