在讲 python 的 pyppeteer 前,先来说下 Node 的 puppeteer 库:

puppeteer的中文意思是:操纵木偶的人,木偶师。

那么 Node 的 puppeteer 是什么呢?

Puppeteer 是一个 Node 库,它提供了高级的 API 来控制 Chrome/Chromium,通过 DevTools 协议。Puppeteer默认使用无头浏览器,但是通过配置可以控制完整的 Chrome/Chromium 浏览器。
英文原文地址:https://github.com/puppeteer/puppeteer#puppeteer

通过介绍,再看 puppeteer 的图标,一个被操纵的浏览器,就会觉得很形象、直观有木有。
在这里插入图片描述
Puppeteer 库是由 Chrome DevTools 团队维护的。

说完了 Node 的 puppeteer 再回过来看 pyppeteer

pyppeteer 是 puppeteer 的非官方 python 版

了解 js 的同学知道,python 和 js 在很多方面挺像的,所以 pyppeteer 也力求尽可能的和 puppeteer 一致,但由于底层的不同,它们还是有些差异的,更多信息可以查看相关的官网。

pyppeteer
  • github 地址:https://github.com/pyppeteer/pyppeteer
  • 文档:https://pyppeteer.github.io/pyppeteer/reference.html
puppeteer
  • github 地址:https://github.com/puppeteer/puppeteer
  • 中文文档:https://zhaoqize.github.io/puppeteer-api-zh_CN/#/
  • 英文文档:https://pptr.dev/
$ pip install pyppeteer # Python >= 3.6

pyppeteer 在初次运行的时候,会自动下载 chromium(版本为 588429,发布时间为 2018-09-04T09:08:12.712Z)。
如果从国内的网直接下载,速度会很慢或无法下载,而且默认版本也比较老,因此,可以配置操作系统的环境变量,从国内的 taobao 镜像下载较新的 chromium。

淘宝镜像地址:
https://npm.taobao.org/mirrors/chromium-browser-snapshots
https://registry.npmmirror.com/binary.html?path=chromium-browser-snapshots/(2022-11-27更新)

~/.bashrc文件内添加环境变量配置(此处直接通过 shell 命令将配置追加到文件底部):

$ echo "export PYPPETEER_DOWNLOAD_HOST='https://npm.taobao.org/mirrors'">>~/.bashrc
$ echo "export PYPPETEER_CHROMIUM_REVISION='1075773'">>~/.bashrc # 此示例版本为当前最新版,发布日期为:2022-11-25T13:32:25.045Z 
$ source ~/.bashrc # 使新环境变量生效
1. 打开浏览器,打开页面,关闭浏览器

demo.py

import asyncio
import pyppeteer
async def main():
	executablePath = pyppeteer.executablePath()
	print('自动下载的 chromium 的存储位置为:', executablePath)
    browser = await pyppeteer.launch(
    	headless=True,  # 如果为False, 则会打开浏览器界面,适合在有界面的机器上观察浏览器行为
    	executablePath=executablePath,  # 也可以指定为机器上的已安装的 Chrome 浏览器: r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
        args=[
            '--no-sandbox'
            #, '--proxy-server=socks5://192.168.237.1:10808'
    page = await browser.newPage()
    await page.setViewport({'width': 1920, 'height': 1080})  # 调整页面的尺寸为 1920*1080
    await page.setJavaScriptEnabled(enabled=True)  # 允许 javascript 执行
    await page.goto(
    	'https://baidu.com', 
    	waitUntil='networkidle0'  # 直到未结束的网络连接数为 0,停止等待。(可以用来等待 ajax 结束)
    html = await page.content()
   	# 3s 后关闭浏览器
   	await asyncio.sleep(3)
    await browser.close()
asyncio.get_event_loop().run_until_complete(main())
2. 截取完整网页
await page.screenshot({
	'path': 'baidu.png',
	'fullPage': True  # 截取完整页面,否则只会截取屏幕可见大小
3. 将网页保存为 mhtml 文件

mhtml 格式能将网页所有内容都存储到单个文件中

cdp = await page.target.createCDPSession()
result: dict = await cdp.send('Page.captureSnapshot', {'format': 'mhtml'})
with open('page.mhtml', 'w') as w:
	w.write(result['data'].replace('\r\n', '\n'))  # 解决 windows 多次换行问题

更多内容可阅读相关官网,也欢迎留言讨论。

简介在讲 python 的 pyppeteer 前,先来说下 Node 的 puppeteer 库:puppeteer的中文意思是:操纵木偶的人,木偶师。那么 Node 的 puppeteer 是什么呢?Puppeteer 是一个 Node 库,它提供了高级的 API 来控制 Chrome/Chromium,通过 DevTools 协议。Puppeteer默认使用无头浏览器,但是通过配置可以控制完整的 Chrome/Chromium 浏览器。英文原文地址:https://github.com/p
API 接口文档:API Reference:https://miyakogi.github.io/pyppeteer/reference.html pyppeteer github 地址:https://github.com/miyakogi/pyppeteer pyppeteer  英文文档地址:https://miyakogi.github.io/pyppeteer/ pyppeteer 官方文档 API Ref...
您好!对于使用pyppeteer进行爬虫的问题,我可以给您一些基本信息和指导。 Pyppeteer是一个用于控制Headless Chrome浏览器Python库,它基于Google的pychrome项目。它允许您使用Python代码自动化与网页进行交互,模拟用户操作,执行JavaScript代码,并提取所需的数据。 以下是使用pyppeteer进行爬虫的基本流程: 1. 安装依赖:使用pip安装pyppeteer库和其他必要的依赖项。 pip install pyppeteer 2. 创建和配置浏览器实例:使用pyppeteer.launch()方法创建一个浏览器实例,并使用一些选项配置它。 ```python import asyncio from pyppeteer import launch async def main(): browser = await launch() page = await browser.newPage() await page.goto('https://example.com') # 执行其他操作... asyncio.get_event_loop().run_until_complete(main()) 3. 进行交互和数据提取:使用page对象与网页进行交互,例如点击按钮、填写表单、执行JavaScript等。您可以使用page.evaluate()方法来获取网页上的数据。 ```python import asyncio from pyppeteer import launch async def main(): browser = await launch() page = await browser.newPage() await page.goto('https://example.com') title = await page.evaluate('document.title') print(title) # 执行其他操作... asyncio.get_event_loop().run_until_complete(main()) 4. 关闭浏览器实例:使用browser.close()方法关闭浏览器实例,释放资源。 ```python import asyncio from pyppeteer import launch async def main(): browser = await launch() page = await browser.newPage() await page.goto('https://example.com') # 执行其他操作... await browser.close() asyncio.get_event_loop().run_until_complete(main()) 这只是一个基本示例,您可以根据您的具体需求进一步探索和使用pyppeteer。如果您需要更多的帮助或有其他问题,请随时提问!
蘑菇猎手: 参考python官网:https://docs.python.org/zh-cn/3/library/stdtypes.html#int.to_bytes [code=python] 1024.to_bytes(2, byteorder='big') # b'\x04\x00' int.from_bytes(b'\x04\x00',byteorder='big') # 1024 [/code] python3大端、小端(Big Endian、LittleEndian)编码 weixin_51660937: 同请教上个评论 解决psycopg2.DataError: invalid byte sequence for encoding "UTF8": 0x00 蘑菇猎手: 有具体的报错吗,贴出来看下 解决psycopg2.DataError: invalid byte sequence for encoding "UTF8": 0x00 leopoincare: 同遇到您这个问题,但是replace后无效呢 关于ASP.NET用VS2012出现数据库内容汉字乱码(中文乱码)或者汉字变问号(中文变问号)的解决办法,非常简单。 蘑菇猎手: 由于没有SQLServer环境,建议数据库名和列名改为英文或拼音,不要使用中文