1.以命令窗口启动chrome浏览器,选择远程连接的端口为9222
chrome.exe --disable-infobars --remote-debugging-port=9222 --user-data-dir="设置路径"
--disable-infobars 表示关闭提示
2. 启动之后chromium通过
http://localhost:9222/json
得到调试信息,chrome通过
http://127.0.0.1:9222/json/version 得到调试信息,
其中webSocketDebuggerUrl为pyppeteer连接的ws地址。
页面显示为
"Browser": "Chrome/78.0.3904.70",
"Protocol-Version": "1.3",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36",
"V8-Version": "7.8.279.17",
"WebKit-Version": "537.36 (@edb9c9f3de0247fd912a77b7f6cae7447f6d3ad5)",
"webSocketDebuggerUrl": "ws://127.0.0.1:9222/devtools/browser/8fc97fd6-a7dd-4ff2-b760-3f6b25b7419b"
import asyncio
import random
from pyppeteer.launcher import connect
useragents=['Mozilla/5.0 (Windows NT 6.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36','Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36','Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36','Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36','Mozilla/5.0 (Windows NT 6.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36','Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36','Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36']
async def main(url):
connect_params={
'browserWSEndpoint': 'ws://127.0.0.1:9222/devtools/browser/8fc97fd6-a7dd-4ff2-b760-3f6b25b7419b',
'logLevel':3,
browser = await connect(connect_params)
page = await browser.newPage() # 启动个新的浏览器页面
await page.setUserAgent(random.choice(useragents))
#设置页面超时时间
page.setDefaultNavigationTimeout(1000*60) #60s
#启用js
await page.setJavaScriptEnabled(True)
await page.setViewport({'width':1300,'height':750}) #设置界面
await page.goto(url) # 访问登录页面
except Exception as e1:
print('e1:',e1)
await page.close()
await browser.close()
return
if __name__ == '__main__':
loop = asyncio.get_event_loop()
url = 'https://www.baidu.com'
m = main(url)
loop.run_until_complete(m)
from anti_useragent import UserAgent
ua=UserAgent(platform='windows',min_version=80)
import asyncio
from pyppeteer.launcher import connect
import json
async def main():
port=9222
options = {'browserURL': f'http://127.0.0.1:{port}/json/version'}
browser = await connect(options=options)
page = await browser.newPage() # 启动个新的浏览器页面
page.setDefaultNavigationTimeout(1000 * 60) # 60s
await page.setUserAgent(ua.chrome)
await page.goto('https://www.baidu.com')
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
1.以命令窗口启动chrome浏览器,选择远程连接的端口为9222chrome.exe --disable-infobars --remote-debugging-port=9222 --user-data-dir="设置路径"--disable-infobars 表示关闭提示2. 启动之后chromium通过http://localhost:9222/json得到调试信息,chrome通过http://127.0.0.1:9222/json/version 得到调试信息,其中webS..
Pyppeteer
已移至
JavaScript(无头)
chrome
/ chromium浏览器自动化库的非官方
Python
端口。
免费软件:MIT许可证(包括根据Apache 2.0许可证分发的工作)
文档: :
Pyppeteer
需要
python
3.6及更高版本。 (实验上支持
python
3.5)
通过PyPI的pip安装:
python
3 -m pip install
pyppeteer
或从安装最新版本:
python
3 -m pip install -U git+https://github.com/miyakogi/
pyppeteer
.git@dev
注意:第一次运行
pyppeteer
时,它将下载最新版本的Chromium(〜100MB)。 如果您不喜欢这种行为,
pyppeteer
-install在运行使用
pyppeteer
的脚本之前运
如果你的机器不是外面的机器,你可能会等long long long time。而且还装不上。
这里提供两种解决方案:1:改配置文件(后面提供了可运行的百度云下载地址)。2:添加参数。
pyppeteer
demo演示地址:https://github.com/...
使用
pyppeteer
或者selenium时,
chrome
窗口最大化step1 定义一个获取当前屏幕尺寸的函数step2 使用该函数
废话不多说直接上代码
step1 定义一个获取当前屏幕尺寸的函数
def screen_size():
# 使用tkinter获取屏幕大小
import tkinter
tk = tkinter.Tk()
width = tk.win...
import os
DEFAULT_DOWNLOAD_HOST = 'https://npm.taobao.org/mirrors'
os.environ["
PYPPETEER
_DOWNLOAD_HOST"] = DEFAULT_DOWNLOAD_HOST
from
pyppeteer
import launch
这里一定要注意引入顺序,设置
分析的是一个航空网站,其实是我再找
python
执行js代码的资料的时候,发现了一个博主分析了这个网站的加密过程,然后我去跟着操作的时候,发现网站的加密部分代码发生了变化,不过在我不小心把网页关了之后,我实在找不到那篇文章了。。。。。所以我再说一下整个的分析过程,不然我就可以只说一下后面不同的部分了
需要安装
pyppeteer
、asyncio
pyppeteer
中文教程:https://zhaoqi...
在前面我们学习了 Selenium 的基本用法,它功能的确非常强大,但很多时候我们会发现 Selenium 有一些不太方便的地方,比如环境的配置,得安装好相关浏览器,比如
Chrome
、Firefox 等等,然后还要到官方网站去下载对应的
驱动
,最重要的还需要安装对应的
Python
Selenium 库,而且版本也得好好看看是否对应,确实不是很方便,另外如果要做大规模部署的话,环境配置的一些问题也是个头疼的事情。
那么本课时我们就介绍另一个类似的替代品,叫作
Pyppeteer
。注意,是叫作 Pyppete
最近在使用
pyppeteer
抓淘宝,同事使用JavaScript写调用puppeteer能完美运行。但我改成
python
就一直报这样一个错误:
pyppeteer
.errors.NetworkError: Protocol Error (Page.navigate): Session closed. Most likely the page has been closed
而代码中造成这样一个错误...
现在有新方法可以搞定这个模拟登陆了,不会被检测出来,可以完美的绕过对window.navigator.webdriver的检测,
pyppeteer
是个好东西!
需要用到的
python
包:asyncio、
pyppeteer
友情提醒一下,第一次运行
pyppeteer
的会下载chromium,速度很慢慢慢慢,还有可能失败。务必耐心等待!!!然后,这个
pyppeteer
对网速和电脑运行速度还有一定的要求...
最近登录某宝和某乎,发现之前写的代码又熄火了,官方给的反扒机制越来越牛叉了,发现之前使用的selenium无法完成登陆的滑动验证,一点作用都没有,菜鸟一枚,查了相关的资料,就开始使用
pyppeteer
来弄某数据平台的内容。使用
pyppeteer
滑动验证参考网上很多文章,以下代码也来源于网络,只对部分细节进行了修改,并且记录了
pyppeteer
使用过程中遇到的一些问题。
#!/u...
在执行
chrome
.exe --remote-
debugging
-port=9222
再到浏览器中输入127.0.0.1:9222/json
注意:如果打不开无法访问,一定要讲打开的浏览器(关闭),确保没有这个任务
async def fetchUrl(url):
browser = await launch({'headless': False,'dumpio':True, 'autoClose':True})
page = await browser..
CSDN-Ada助手:
pyppeteer dialog点击弹窗
FOAF-lambda:
pyppeteer dialog点击弹窗
微saferland:
python3 import cv2 报 ModuleNotFoundError: No module named 'numpy.core._multiarray_umath'
qq_47146581:
scrapy-redis 完全重写start_requests函数
water___Wang: