<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>crawler on Magisk</title>
    <link>https://magiskxzy.org/tags/crawler/</link>
    <description>Recent content in crawler on Magisk</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Sun, 22 Dec 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://magiskxzy.org/tags/crawler/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>一种爬虫的新方式</title>
      <link>https://magiskxzy.org/hackers/drissionpage_introduction/</link>
      <pubDate>Sun, 22 Dec 2024 00:00:00 +0000</pubDate>
      
      <guid>https://magiskxzy.org/hackers/drissionpage_introduction/</guid>
      
        <description>在面对一个需要大批量获取数据的任务时，如获取抖音评论、购物购车平台评分等，这部分数据除了氪金购买外，一般的做法是使用网络爬虫进行获取。但目前这些平台为了防止数据的泄露，近年来也在不断加强网站的反爬机制，因此网络爬虫在实际过程中的运用难度越来越高。
网站爬虫的一般操作是:首先分析出所需数据的xpath或者正则表达来定位数据，再基于Selenium或者BeautifulSoup模拟浏览器运行、PyQuery解析和操作HTML文档，然后获取平台中商品价格、销量、地区、评论等信息，并存储于文档中。另一类则有不同思路，并非使用python模拟人类的浏览器操作，而是使用requests库直接向服务器发送请求数据包，以获取所需要的数据。
但是Selenium库虽然可以操作浏览器、模拟用户行为，但使得浏览器运行效率并不高；而后者使用request请求数据包，就会面对需要登录的网站时，往往还要应付验证码、JS混淆、签名参数等反爬手段，门槛较高。若数据是由JS计算生成的，还须重现计算过程，开发效率不高。
也是上述理由，在我又一次面对网络爬虫任务的时候感到头疼，不过很快随着我的搜索，一个新的爬虫解决方案被我翻了出来——DrissionPage。
那么，DrissionPage是什么呢？
DrissionPag设计初衷，是将request和Selenium两种数据获取的方式合而为一，并能够在不同须要时切换相应模式，提高开发和运行效率。
由Claude生成：DrissionPage的核心架构由三个关键组件构成，它们通过精密的协作提供了强大的网页自动化能力。会话管理器作为框架的&amp;quot;大脑&amp;quot;，负责管理所有网络通信状态，包括在Selenium和Requests两种模式间自动同步cookies和session信息，统一管理代理设置和请求头配置，并能有效处理会话超时、重连等异常情况；页面对象模型(POM)则提供了统一的元素定位接口和链式操作支持，通过惰性加载机制提升性能，同时自动进行元素状态检查以确保操作可靠性；混合模式引擎则充当Selenium和Requests之间的智能桥梁，通过维护共享上下文来保持数据同步，并能根据不同操作类型自动选择最优模式，例如在需要JavaScript交互时使用Selenium，而在进行数据抓取时优先使用Requests。这三个组件的协同工作使得开发者能够通过统一的接口实现复杂的自动化任务，同时享受到简化的代码编写体验、更高的程序执行效率、增强的稳定性以及优化的资源占用，特别是在处理需要频繁切换操作模式的场景时，能够显著提升开发效率和程序性能。在内部实现上，它们通过事件驱动和状态同步机制保持紧密联系，任何一个组件的状态变化都会及时通知其他组件进行相应调整，从而确保整个系统的一致性和可靠性，这种设计不仅解决了传统网页自动化工具的局限性，还为复杂的网页交互自动化需求提供了一个优雅而高效的解决方案。
DrissionPage项目地址：https://github.com/g1879/DrissionPage
下面使用我自己爬取京东用户评论的例子，介绍一下DrissionPage的基础使用方法，第一步就是安装DrissionPage库到自己的电脑环境中。下载方式很简单，直接在cmd窗口调用pip下载即可：
pip install DrissionPage 接下来，DrissionPage给予了使用者两个选择，一是可以使用SessionPage发送和接收数据包（SessionPage基于Python requests库实现，本质是一个增强版的Session对象），二是使用ChromiumPage启动浏览器模仿用户操作（ChromiumPage 基于Chrome DevTools Protocol实现，直接与浏览器内核通信，不依赖Selenium）。我在爬取京东评论的过程中使用的 ChromiumPage。</description>
      
    </item>
    
  </channel>
</rss>