Pyppeteer Python加载扩展及示例

106 篇文章 0 订阅
2 篇文章 0 订阅
Pyppeteer是一个Python库,用于控制无头Chrome或Chromium,支持加载扩展以实现网页自动化、内容修改、请求拦截等功能。通过加载扩展,用户可以自定义浏览器行为,如修改DOM、注入JavaScript代码或设置网络代理。
摘要由CSDN通过智能技术生成

亿牛云代理
Pyppeteer 是一个 Python 库,可以控制无头 Chrome 或 Chromium 浏览器,并在网页加载过程中加载扩展来增强浏览器功能。Pyppeteer 提供了一个 API,让您可以与无头浏览器交互,完成网页抓取、自动化测试、网页截图或 PDF 生成等任务。加载扩展的功能可以让您在浏览器导航到网页时,运行自定义的 JavaScript 代码,从而改变浏览器的行为。您可以在页面加载之前对页面进行操作,例如修改 DOM(文档对象模型)、拦截网络请求、注入其他脚本等。一些常见的加载扩展的用例有:

  • 网络请求拦截:您可以修改页面发出的网络请求或响应,实现自定义的请求处理逻辑、阻止某些请求或向请求中添加额外数据。
  • 页面内容修改:您可以在加载过程中改变页面的 DOM,删除或更改元素、修改 HTML、CSS 或 JavaScript 代码等。
  • 附加功能注入:您可以添加自定义的 JavaScript 代码,在加载页面的上下文中运行,执行特定操作或与页面内容交互。

总之,Pyppeteer 的加载扩展功能可以让您扩展浏览器功能并自定义网页加载时的行为,实现更强大、更灵活的自动化和 Web 内容交互。要使用这个功能,您需要在启动浏览器时指定扩展路径,并使用 --disable-extensions-except 和 --load-extension 标志。例如:

import asyncio
from pyppeteer import launch
from pyppeteer_stealth import stealth

# 定义扩展路径,用于屏蔽广告、图片和视频
extension_path = "C:\\Users\\PC_USER\\AppData\\Local\\BraveSoftware\\Brave-Browser\\User Data\\Default\\Extensions\\ofjjanaennfbgpccfpbghnmblpdblbef\\1.3_0"

# 亿牛云 爬虫代理加强版
# 定义 代理IP用户名、密码、主机、端口
proxy_username = "16YUN"
proxy_password = "16IP"
proxy_ip = "www.16yun.cn"
proxy_port = "31000"


# 定义一个异步函数,用于采集头条网站的新闻标题
async def scrape_toutiao():
    # 启动浏览器,加载扩展,并设置代理 IP
    browser = await launch({
        'headless': False,
        'slowMo': 5,
        'options': {
            'args': [
                f'--disable-extensions-except={extension_path}',
                f'--load-extensions={extension_path}',
                '--enable-automation',
                '--start-maximized',
                '--hide-scrollbars',
                '--disable-bundled-ppapi-flash',
                '--mute-audio',
                '--no-sandbox',
                '--disable-setuid-sandbox',
                '--disable-gpu',
                f'--proxy-server=http://{proxy_ip}:{proxy_port}' #代理IP地址和端口              ]
        },
        'defaultViewport': None
    })

    # 创建一个新页面,并使用 stealth 模式
    page = await browser.newPage()
    await stealth(page)

    # 导航到头条网站,并等待页面加载完成
    await page.goto('https://www.toutiao.com', {'waitUntil': 'networkidle2'})

    # 输入代理 IP 的用户名和密码,并点击确认按钮
    await page.type('#username', proxy_username)
    await page.type('#password', proxy_password)
    await page.click('#confirm')

    # 获取页面中的新闻标题元素,并提取文本内容
    titles = await page.evaluate('''() => {
        let elements = document.querySelectorAll('.title-box a')
        let titles = []
        for (let element of elements) {
            titles.push(element.innerText)
        }
        return titles
    }''')

    # 打印前 100 个新闻标题
    for i, title in enumerate(titles[:100]):
        print(f'{i+1}. {title}')

    # 关闭浏览器
    await browser.close()

# 运行异步函数
asyncio.get_event_loop().run_until_complete(scrape_toutiao())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值