使用Playwright实现异步Chromium浏览器自动化

在本篇文章中,我们将深入探索如何使用Playwright库进行Chromium浏览器的异步自动化操作,并结合实际示例展示如何加载网页并提取纯文本内容。

技术背景介绍

Chromium是开源浏览器项目,Playwright是一个强大的浏览器自动化库,支持包括Chromium在内的多个浏览器。通过Playwright,我们可以轻松地在无头模式下(即无图形界面)启动Chromium浏览器,以实现自动化测试、网页数据抓取等工作。

核心原理解析

无头模式意味着浏览器在后台运行,没有可视的用户界面。我们通过AsyncChromiumLoader加载网页,并使用Html2TextTransformer将HTML内容转换为纯文本,这不仅节省了系统资源,还简化了数据处理流程。

代码实现演示

下面我们将展示如何实现这一过程:

  1. 首先,我们需要安装所需的库:

    %pip install --upgrade --quiet playwright beautifulsoup4 html2text
    !playwright install
    
  2. 如果你在使用Jupyter notebooks,还需要安装并应用nest_asyncio:

    !pip install nest-asyncio
    import nest_asyncio
    nest_asyncio.apply()
    
  3. 接下来,我们编写代码,使用AsyncChromiumLoader加载页面内容:

    from langchain_community.document_loaders import AsyncChromiumLoader
    
    # 配置要抓取的URL
    urls = ["https://docs.smith.langchain.com/"]
    loader = AsyncChromiumLoader(urls, user_agent="MyAppUserAgent")
    
    # 加载文档
    docs = loader.load()
    
    # 打印前100个字符
    print(docs[0].page_content[0:100])
    
    # 输出示例: '<!DOCTYPE html><html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-2.0 plugin-d'
    
  4. 使用Html2TextTransformer将HTML内容转换为纯文本:

    from langchain_community.document_transformers import Html2TextTransformer
    
    html2text = Html2TextTransformer()
    
    # 转换文档
    docs_transformed = html2text.transform_documents(docs)
    
    # 打印前500个字符的纯文本内容
    print(docs_transformed[0].page_content[0:500])
    
    # 输出示例: 'Skip to main content\n\nGo to API Docs\n\nSearch`⌘``K`\n\nGo to App\n\n * Quick start\n * Tutorials\n\n * How-to guides\n\n * Concepts\n\n * Reference\n\n * Pricing\n * Self-hosting\n\n * LangGraph Cloud\n\n * * Quick start\n\nOn this page\n\n# Get started with LangSmith\n\n**LangSmith** is a platform for building production-grade LLM applications. It\nallows you to closely monitor and evaluate your application, so you can ship\nquickly and with confidence. Use of LangChain is not necessary - LangSmith\nworks on it'
    

应用场景分析

  1. 网页数据抓取:可以自动化抓取需要的网页数据,适用于需要定期收集和分析网页内容的场景。
  2. 自动化测试:在软件开发过程中,使用无头浏览器进行自动化测试,提高开发效率。
  3. SEO分析:提取网站的文本内容,进行SEO优化分析,帮助提高网站排名。

实践建议

  1. 配置稳定的API服务:推荐使用稳定的API服务,如 https://yunwu.ai,确保在国内环境下的稳定访问。
  2. 使用无头模式:在无头模式下运行浏览器,减少资源占用,提高效率。
  3. 保持异步操作:使用异步方式加载和处理网页,提升整体性能。
import openai

# 使用稳定可靠的API服务
client = openai.OpenAI(
    base_url='https://yunwu.ai/v1',  # 国内稳定访问
    api_key='your-api-key'
)

如果遇到问题欢迎在评论区交流。

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值