关于Pyppeteer 的使用回顾

本文介绍了Pyppeteer库如何用于新建浏览器对象和页面,通过launch方法启动浏览器,并提供了参数配置示例。接着讲解了如何获取页面内容以及使用BeautifulSoup和etree进行数据解析,包括find、find_all和xpath等方法。
摘要由CSDN通过智能技术生成

Pyppeteer 的方法介绍

1.launch介绍

# 新建浏览器对象需要导入两个包, Pyppeteer 是基于 Python 的新特性 async 实现的
import asyncio
from pyppeteer import launch
# 首先新建一个协程方法
async def 方法名():
	browser = await launch() # 创建一个Browser对象
	"""
	不新建页面使用浏览器打开的页面
	"""
	pages = await browser.pages()
	page = pages[0] 
	# 规定打开页面内容的大小
	await page.setViewport({"width": width, "height": height})
	# 使用goto方法请求打开页面链接
    await page.goto('https://www.1234567.com.cn/')
    # 暂停100秒,简单的介绍下,复制记得去除掉
    await asyncio.sleep(100)
    html =  await page.content() # 获取请求的页面内容
    # 拿到了页面内容,现在只需要进行解析就可以了
    return html
"""
使用asyncio下的getget_event_loop().run_until_complete(建立的方法名)来执行
"""
asyncio.get_event_loop().run_until_complete(main())

2.launch的参数介绍

"""
参数:
	headless:[True  不打开浏览器, False 打开浏览器]
	设置浏览器大小
	"args": [f'--window-size={width},{height}']
	关闭提示条:”Chrome 正受到自动测试软件的控制”
	 "args":[’–disable-infobars’]
	 可执行文件的路径,如果指定之后就不需要使用默认的 Chromium 了,可以指定为已有的 Chrome 或 Chromium。
 	"executablePath": r"文件路径\chrome.exe"
	
	ignoreHTTPSErrors (bool): 是否要忽略 HTTPS 的错误,默认是 False。
	headless (bool): 是否启用 Headless 模式,即无界面模式,如果 devtools 这个参数是 True 的话,那么该参数就会被设置为 False,否则为 True,即默认是开启无界面模式的。
	executablePath (str): 可执行文件的路径,如果指定之后就不需要使用默认的 Chromium 了,可以指定为已有的 Chrome 或 Chromium。
	args (List[str]): 在执行过程中可以传入的额外参数。
	devtools (bool): 是否为每一个页面自动开启调试工具,默认是 False。如果这个参数设置为 True,那么 headless 参数就会无效,会被强制设置为 False
"""
# 如下例:
async def main():
    width, height = 1200, 960
    start_parm = {
        "executablePath": r"D:\Python37\pyppeteer\pyppeteer\local-chromium\588429\chrome-win32\chrome.exe",
        # 关闭无头浏览器
        "headless": False,
        "args": [f'--window-size={width},{height}', '–disable-infobars'],
        # "devtools": True,
    }
    browser = await launch(start_parm)
    # 也可以
    browser = await launch(**start_parm)
    pages = await browser.pages()
	page = pages[0] 
	# 规定打开页面内容的大小
	await page.setViewport({"width": width, "height": height})
	# 使用goto方法请求打开页面链接
    await page.goto('https://www.1234567.com.cn/')
    # 暂停100秒,简单的介绍下,复制记得去除掉
    await asyncio.sleep(100)
    html =  await page.content() # 获取请求的页面内容
    # 拿到了页面内容,现在只需要进行解析就可以了
    return html
asyncio.get_event_loop().run_until_complete(main())

3.解析数据

"""
以上的方法返回了页面内容,现在要做的是解析页面并获取需要的内容,
简单介绍对应的方式
"""
# 第一种
from bs4 import BeautifulSoup
# 定义的协程方法名:返回的是页面内容
soup = BeautifulSoup(定义的协程方法名. "html5lib")
# 或者使用
soup = BeautifulSoup(定义的协程方法名. "lxml")
# 这个库下查找元素的方法有
"""
传入标签:例如-div,a等等
传入对应的id,name,calss等等:例如-{"class":"名称"}、{"id":"名称"}、{"name":"名称"}等等
"""
# 单个查找方法
element=soup.find()
# N个查找方法
elements=soup.fina_all()

# 单个的属性获取直接.就行,多个需要迭代
#例如
#单个
element.get() # 获取属性,图片的src等等
element.text # 获取这个标签的文本
#多个
for element in elements:
	element.get() # 获取属性,图片的src等等
	element.text # 获取这个标签的文本
"""
以上是BeautifulSoup下的几种方法,现在介绍etree
# 将html文件进行读取
html = etree.parse('1.html')
# 将html内容序列化
result = etree.tostring(html).decode('utf-8')
"""
from lxml import etree
# 调用 etree 模块的 HTML() 方法来创建 HTML 解析对象
html = etree.HTML(定义的协程方法名)
html.xpath("//标签[@class='定义的对象']") 

"""
xpath表达式,来找寻指定的内容,提取文本使用text(),这里获取的是获取所有a标签下的文本
建立etree.HTML()对象后无法直接使用对象点出方法,手敲.xpath()
"""
xpath_bds='//a/text()'
# 提取文本数据,以列表形式输出
r_list=parse_html.xpath(xpath_bds)
# 具体可参考 https://blog.csdn.net/m0_63794226/article/details/126377840?spm=1001.2014.3001.5502

总结:
部分内容模糊,再次学习加深了理解。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值