这里我们还使用了一个新的参数设置--window-size , 这个是用来设置浏览器的窗口大小 , 与下面的setViewport相比 , 一个是设置窗口大小 , 一个是设置页面大小 。我们这里调用了createIncogniteBrowserContext方法 , 返回了一个context对象 , 然后用这个对象打开网页 , 就进入了无痕模式 。
在执行这段代码的时候 , 我先执行了一次上面那一次代码 , 发现依然是处于登录状态 , 然后我们执行本次代码后发现显示如下:

文章插图
发现出现了两层窗口 , 一个是launch创建的browser窗口 , 一个是通过createIncogniteBrowserContext创建的无痕窗口 。
- 关闭
async def main():width = 1366height = 768browser = await launch(headless=False, args=['--disable-infobars', f'--window-size={width}, {height}'])context = await browser.createIncogniteBrowserContext()page = await context.newPage()await page.setViewport({'width': width, 'height': height})await page.goto('https://mp.weixin.qq.com/')await asyncio.sleep(100)await browser.close()PagePage就是页面 , 每一个选项卡就是一个页面 , 它的类定义如下:class pyppeteer.page.Page(client: pyppeteer.connection.CDPSession, target: Target, frameTree: Dict[KT, VT], ignoreHTTPSErrors: bool, screenshotTaskQueue: list = None)我们上面在使用的过程中都是通过browser对象创建一个新页面 , 这也是我们经常使用它的方式 , 接下来我们看一下它的常用方法 。- 选择器
下面我们就来看看它的用法:
async def main():browser = await launch()page = await browser.newPage()await page.goto('https://movie.douban.com/chart')await page.waitForSelector('table .item')j1 = await page.J('table .item')j2 = await page.querySelector('table .item')jj1 = await page.JJ('table .item')jj2 = await page.querySelectorAll('table .item')print('J Result: ', j1)print('querySelector Result: ', j2)print('JJ Result: ', jj1)print('querySelectorAll Result: ', jj2)await browser.close()我们分别使用J、JJ、querySelector、querySelectorAll四个方法 , 看一下他们的输出结果:J Result:<pyppeteer.element_handle.ElementHandle object at 0x1147734d0>querySelector Result:<pyppeteer.element_handle.ElementHandle object at 0x114788c50>JJ Result:[<pyppeteer.element_handle.ElementHandle object at 0x1147324d0>, <pyppeteer.element_handle.ElementHandle object at 0x114732a50>, <pyppeteer.element_handle.ElementHandle object at 0x11472aa90>, <pyppeteer.element_handle.ElementHandle object at 0x11472a110>, <pyppeteer.element_handle.ElementHandle object at 0x11472a0d0>, <pyppeteer.element_handle.ElementHandle object at 0x11478d210>, <pyppeteer.element_handle.ElementHandle object at 0x11478d290>, <pyppeteer.element_handle.ElementHandle object at 0x11478d2d0>, <pyppeteer.element_handle.ElementHandle object at 0x11478d250>, <pyppeteer.element_handle.ElementHandle object at 0x11478d310>]querySelectorAll Result:[<pyppeteer.element_handle.ElementHandle object at 0x114786690>, <pyppeteer.element_handle.ElementHandle object at 0x114786750>, <pyppeteer.element_handle.ElementHandle object at 0x114781610>, <pyppeteer.element_handle.ElementHandle object at 0x114781fd0>, <pyppeteer.element_handle.ElementHandle object at 0x114781b10>, <pyppeteer.element_handle.ElementHandle object at 0x11478dd50>, <pyppeteer.element_handle.ElementHandle object at 0x11478ddd0>, <pyppeteer.element_handle.ElementHandle object at 0x11478de10>, <pyppeteer.element_handle.ElementHandle object at 0x11478dd90>, <pyppeteer.element_handle.ElementHandle object at 0x11478de50>]从结果中可以看出来 , J和querySelector返回单个对象 , JJ和querySelectorAll返回多个对象
推荐阅读
- 破了这几种爬虫加密算法后,我的路更近了「JS逆向3」
- 「Charles」抓包神器
- Kali技术分享 网站镜像神器Httrack安装及使用
- 硬盘检测修复神器:硬盘哨兵HardDisk Sentinel
- 快速、轻巧,强大!3 个下载神器,分分钟打造 NAS 下载机
- 黑客必用神器“msf”的post模块实战讲解
- 在安卓手机搭建kali环境,手机变成便携式渗透神器
- Python自带爬虫库urllib使用大全
- 免洗护发素可携带的护发神器
- 凭借这5步,我30分钟学会了Python爬虫
