2025年2021-09-23-CR-014 Python爬虫,pyppetter的基本操作

2021-09-23-CR-014 Python爬虫,pyppetter的基本操作pyppetter 的基本操作 准备阶段 先安装 pyppeteer 库 导入的名称同库名 查看浏览器版本 pyppeteer chromium revision 查看浏览器存储路径 pyppeteer executablePa 简单示例 from pyppeteer import launch import

大家好,我是讯享网,很高兴认识大家。

pyppetter的基本操作

准备阶段

先安装 pyppeteer库

导入的名称同库名

查看浏览器版本

pyppeteer.__chromium_revision__ 

讯享网

查看浏览器存储路径

讯享网pyppeteer.executablePath() 

简单示例

from pyppeteer import launch import asyncio async def main(): browser =await launch(headless=False, args=['--disable-infobars']) page=await browser.newPage() await page.setViewport({ 
   'width': 1200, 'height': 800}) await page.goto("http://www.baidu.com/") asyncio.get_event_loop().run_until_complete(main()) 

launch的英文释义是发射,这里是 指的启动个浏览器,这个函数是个异步函数,所以必须await ,不然是会报错的

在这里插入图片描述
讯享网

启动一个新的 选项卡页面

讯享网page=await browser.newPage() 

启动一个新的页面
在这里插入图片描述

调整页面尺寸

await page.setViewport({'width': 1200, 'height': 800}) 

使页面的尺寸变为1200*800

前往一个页面

讯享网await page.goto("http://www.baidu.com/") 

前往这个页面

在这里插入图片描述
第一次启动还会下载浏览器,不是什么问题
在这里插入图片描述

获取输入框并加入文字

await page.type('#kw','pyppeteer') 

type函数,第一个参数以选择器筛选,第二个是输入的文字
在这里插入图片描述
这里选择id为kw的输入框,加入文字pyppeteer

实现点击

讯享网 await page.click('#su') 

点击这个选择器,实现点击百度一下
在这里插入图片描述

添加浏览器用户代理

await page.setUserAgent("Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML,\ like Gecko) Chrome/19.0.1084.36 Safari/536.5") 

给浏览器截图

讯享网 await page.screenshot(path='xxx.png') 

截图受到窗口的影响,图像 的尺寸正好是上面设定的窗口大小
在这里插入图片描述

关闭浏览器

await browser.close() 

关闭浏览器,不关闭运行完自己也会 关闭,这是loop指定的run_until_complete()

运行这个程序

讯享网asyncio.get_event_loop().run_until_complete(main()) 

因为这个异步必须在函数里,所以将上面的功能封装在一个main函数,再循环,直到任务完成

模拟JS操作

绕过浏览器webdriver检测

实际是设置navigator.webdriver的值为undefined,未定义,或者为false

 await page.evaluateOnNewDocument('() =>{ Object.defineProperties(navigator,' '{ webdriver:{ get: () => undefined } })}') 

返回cookie

写个JS函数返回cookie

讯享网 dimensions = await page.evaluate(''' () => { return { cookie: window.document.cookie, } }''') print(dimensions, type(dimensions)) 

在这里插入图片描述

滚动到页面底部

 await page.evaluate('window.scrollBy(0, document.body.scrollHeight)') 

解析页面

CSS选择器

用经常访问的网页 做示例

讯享网async def main(): browser =await launch(headless=False, args=['--disable-infobars']) page=await browser.newPage() await page.setViewport({ 
   'width': 1200, 'height': 800}) await page.setUserAgent("Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML,\ like Gecko) Chrome/19.0.1084.36 Safari/536.5") await page.evaluateOnNewDocument('() =>{ Object.defineProperties(navigator,' '{ webdriver:{ get: () => undefined } })}') await page.goto('https://pic.netbian.com/4kmeinv/') xx=await page.querySelectorAll('.clearfix li a img') print(xx) for i in xx: print(await (await i.getProperty('src')).jsonValue()) time.sleep(3) input()#等待,避免直接被关闭 await browser.close() asyncio.get_event_loop().run_until_complete(main()) 

有querySelector和querySelectorAll两个函数
前一个取第一个,后一个取所有
示例取这个网页的所有 class为 clearfix下的 标签li下的标签a 下的img
await (await i.getProperty(‘src’)).jsonValue()是遍历这个集合提取src属性并提取jsonValue
不提取值也是一个对象,提取后是个 链接
在这里插入图片描述

xpath提取

其余 代码同上

 xx=await page.xpath('//*[@id="main"]/div[3]/ul/li/a/img') print(xx) for i in xx: print(await (await i.getProperty('src')).jsonValue()) 

三个函数的缩写名称

querySelector和querySelectorAll两个函数分别为page.J()和 page.JJ(),xpath则是 page.Jx()

小讯
上一篇 2025-02-10 11:15
下一篇 2025-01-06 14:27

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/44633.html