admin管理员组

文章数量:1026989

爬虫修炼的三种境界

目录

    • 前言
      • 三种境界
        • 第一个阶段:爬取简单网页
        • 第二个阶段: 爬取动态数据
        • 第三阶段:逆向与破解
      • 几点体会

前言

我搞爬虫断断续续也两三年了,不专职做,但经常遇到一些数据的需求,所以绕不开它。
看了目前出版的书籍,以及CSDN和知乎上一些讨论。简单总结一下个人体会。

互联网上50%的数据是无需登录就能获取的,这些用三套件就能解;还有30%的数据是需要登录的,用selenium解;剩下10%的数据需要逆向破解才能获取。

三种境界

或者是三个阶段。

第一个阶段:爬取简单网页

这个阶段就是会利用bs4, lxml加requests三个库,能搞掂无需登录的页面数据。能根据浏览器devtool分析一些ajax请求的URL,然后采用三套件爬取。例如一些无限下拉请求,分页请求的数据。
完成这个阶段,基本能搞掂60~70%数据的获取了。也算是初级爬虫工程师了。

第二个阶段: 爬取动态数据

这个阶段能利用selenium,或puppeteer或Playwright搞掂一些动态数据。所谓动态,就是页面第一次渲染不会出来的数据,也就是你直接用request.get()拿不到,需要手工点击,下拉或延迟才能加载出来的数据。
这个阶段,能模拟一些简单的登录,分析页面的请求流程,然后组装自己的爬取逻辑。

第三阶段:逆向与破解

场景:必须登录才能拿到数据。两个解决途径:

  • 采用selenium/puppeteer/Playwright拉起chrome,debug模式,手工登录一次,然后selenium模拟人工随机点击,保持会话,然后即可做其它数据抓取。笔者采用此法屡试不爽。避开了要破解登录的难题
  • 登录破解,通过抓包,逆向,分析登录数据,主要是token,然后程序模拟登录,再进一步获取
    此阶段包括app数据的抓取。

几点体会

  • 不要想着把所有操作都自动化,这样成本会比较高。自动化要一步步来,先比全手工提高半步就行。例如抓取csdn的所有社区,直接从devtool里拿就是,何须要自动化呢?
  • 工具都有局限性,要结合多个工具
  • 优先使用bs4, lxml+requests搞掂,下下策再去考虑逆向

爬虫修炼的三种境界

目录

    • 前言
      • 三种境界
        • 第一个阶段:爬取简单网页
        • 第二个阶段: 爬取动态数据
        • 第三阶段:逆向与破解
      • 几点体会

前言

我搞爬虫断断续续也两三年了,不专职做,但经常遇到一些数据的需求,所以绕不开它。
看了目前出版的书籍,以及CSDN和知乎上一些讨论。简单总结一下个人体会。

互联网上50%的数据是无需登录就能获取的,这些用三套件就能解;还有30%的数据是需要登录的,用selenium解;剩下10%的数据需要逆向破解才能获取。

三种境界

或者是三个阶段。

第一个阶段:爬取简单网页

这个阶段就是会利用bs4, lxml加requests三个库,能搞掂无需登录的页面数据。能根据浏览器devtool分析一些ajax请求的URL,然后采用三套件爬取。例如一些无限下拉请求,分页请求的数据。
完成这个阶段,基本能搞掂60~70%数据的获取了。也算是初级爬虫工程师了。

第二个阶段: 爬取动态数据

这个阶段能利用selenium,或puppeteer或Playwright搞掂一些动态数据。所谓动态,就是页面第一次渲染不会出来的数据,也就是你直接用request.get()拿不到,需要手工点击,下拉或延迟才能加载出来的数据。
这个阶段,能模拟一些简单的登录,分析页面的请求流程,然后组装自己的爬取逻辑。

第三阶段:逆向与破解

场景:必须登录才能拿到数据。两个解决途径:

  • 采用selenium/puppeteer/Playwright拉起chrome,debug模式,手工登录一次,然后selenium模拟人工随机点击,保持会话,然后即可做其它数据抓取。笔者采用此法屡试不爽。避开了要破解登录的难题
  • 登录破解,通过抓包,逆向,分析登录数据,主要是token,然后程序模拟登录,再进一步获取
    此阶段包括app数据的抓取。

几点体会

  • 不要想着把所有操作都自动化,这样成本会比较高。自动化要一步步来,先比全手工提高半步就行。例如抓取csdn的所有社区,直接从devtool里拿就是,何须要自动化呢?
  • 工具都有局限性,要结合多个工具
  • 优先使用bs4, lxml+requests搞掂,下下策再去考虑逆向

本文标签: 爬虫修炼的三种境界