Code Monkey home page Code Monkey logo

fengspider's Introduction

FengSpider


自己的一些爬虫经验总结

[资源]

目录

  • 爬取
  • 解析
  • 存储
  • 防反爬
  • 加速

爬取

爬取类型

  • 网页爬取
    • 服务端渲染
    • 客户端渲染
  • App 爬取
    • 普通接口
    • 加密参数接口
    • 加密内容接口
    • 非常规协议接口

页面渲染方式

  • 服务端渲染:页面结果是由服务器渲染后返回的,有效信息包含在请求的HTML页面中
  • 客户端渲染:页面结果由JavaScript渲染而成,数据一般经过ajax获取

网页爬取

  • 对于服务端渲染的只需要获取到相应的页面即可
  • 对于客户端渲染
    • 寻找ajax接口:通过浏览器的开发者工具
    • 模拟浏览器执行:使用selenium
    • 模拟执行JavaScript:使用js2py等类库

app爬取

  • 对于普通无加密接口,这种直接抓包拿到接口的具体请求形式就好了,可用的抓包工具有 Charles、Fiddler、mitmproxy。
  • 对于加密参数的接口,一种方法可以实时处理,例如 Fiddler、mitmdump、Xposed 等,另一种方法是将加密逻辑破解,直接模拟构造即可,可能需要一些反编译的技巧。
  • 对于加密内容的接口,即接口返回结果完全看不懂是什么东西,可以使用可见即可爬的工具 Appium,也可以使用 Xposed 来 hook 获取渲染结果,也可以通过反编译和改写手机底层来实现破解。
  • 对于非常规协议,可以使用 Wireshark 来抓取所有协议的包,或者使用 Tcpdump 来进行 TCP 数据包截获。

解析

常用解析规则

  • CSS 选择器
  • xpath语法
  • 正则表达式
  • json数据处理
  • xml处理

注意:这里有一个研究方向——智能解析

问题:如果我们要爬上万个网站,如果每个网站都去写对应的规则,这样会很累而且繁琐

提出需求:如果能提供一个页面,算法可以自动来提取页面的标题、正文、日期等内容,同时把无用的信息给刨除,这将大大节省时间

智能解析

  • readability 算法,这个算法定义了不同区块的不同标注集合,通过权重计算来得到最可能的区块位置。
  • 疏密度判断,计算单位个数区块内的平均文本内容长度,根据疏密程度来大致区分。
  • Scrapyly 自学习,是 Scrapy 开发的组件,指定⻚页⾯面和提取结果样例例,其可⾃自学习提取规则,提取其他同类⻚页⾯面。
  • 深度学习,使⽤用深度学习来对解析位置进⾏行行有监督学习,需要⼤大量量标注数据。

现成可以使用的框架

  • you-get:爬取视频
  • newspaper:爬取新闻

存储

  • 文件,如 JSON、CSV、TXT、图⽚、视频、⾳频等,常用的一些库有 csv、xlwt、json、pandas、pickle、python-docx 等。
  • 数据库,分为关系型数据库、非关系型数据库,如 MySQL、MongoDB

反爬

  • 封IP:设置代理
  • 验证码
    • 找打码平台
    • 深度学习
    • 需要登录的封账号:多注册几个账号,维护Cookie池

加速

  • 单机多线程
  • 多机多进程
  • 使用成熟的工程化框架

fengspider's People

Contributors

ylfeng250 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.