🎮

爬虫技术之pyppeteer

Created
Sep 15, 2023 07:05 AM
Tags
自动化工具
Person
notion image
 
pyppeteer 是非官方 Python 版本的 Puppeteer 库,浏览器自动化库,由日本工程师开发。
notion image
Puppeteer 是 Google 基于 Node.js 开发的工具,调用 Chrome 的 API,通过 JavaScript 代码来操纵 Chrome 完成一些操作,用于网络爬虫、Web 程序自动测试等。
pyppeteer 使用了 Python 异步协程库 asyncio,可整合 Scrapy 进行分布式爬虫。
 
 
太简单 懒得讲
这里帖一个 配置代码
from pyppeteer import launch import asyncio def screen_size(self): """使用tkinter获取屏幕大小""" # 导入gui编程的模块 import tkinter # 创建一个空间界面 tk = tkinter.Tk() # 获得宽高 width = tk.winfo_screenwidth() height = tk.winfo_screenheight() tk.quit() # 得到返回值 return width, height browser = await launch({ 'headless': False, # 关闭无头模式 'devtools': False, # 控制界面的显示,用来调试 'autoClose': True, 'executablePath': '', 'args': [ '--disable-extensions', '--hide-scrollbars', '--disable-bundled-ppapi-flash', '--mute-audio', # '--no-sandbox', # --no-sandbox 在 docker 里使用时需要加入的参数,不然会报错 '--disable-gpu', '--disable-xss-auditor', # 页面全屏 '--start-maximized', # service_args是代理 f'--proxy-server={service_args}' ], # 忽略自动化控制 'ignoreDefaultArgs': ['--enable-automation'], 'dumpio': True, # 解决浏览器多开卡死 }, userDataDir='history/cache/') width, height = screen_size() tasks = [ # 设置UA asyncio.ensure_future(page.setUserAgent(random.choice(fake_useragent.UserAgent().random))), # 启用JS,不开的话无法执行JS asyncio.ensure_future(page.setJavaScriptEnabled(True)), # 关闭缓存 asyncio.ensure_future(page.setCacheEnabled(False)), # 设置窗口大小 asyncio.ensure_future(page.setViewport({"width": width, "height": height})) ] await asyncio.wait(tasks) # 开启 隐藏 是selenium 让网站检测不到 await page.evaluate('''() =>{ Object.defineProperties( navigator,{ webdriver:{ get: () => false } } ) }''') await asyncio.wait(tasks) await asyncio.sleep(1)