爪巴虫简介

爬虫分类

网络爬虫按照系统结构和实现技术,大致可分为一下几种类型:

  • 通用网络爬虫:就是尽可能大的网络覆盖率,如 搜索引擎(百度、雅虎和谷歌等…)
  • 聚焦网络爬虫:有目标性,选择性地访问万维网来爬取信息
  • 增量式网络爬虫:只爬取新产生的或者已经更新的页面信息。特点:耗费少,难度大
  • 深层网络爬虫:通过提交一些关键字才能获取的Web页面,如登录或注册后访问的页面

实际工作中通常是几种爬虫技术结合实现。

应用场景

爬虫技术在科学研究、Web安全、产品研发、舆情监控等领域可以做很多事情。

  • 在数据挖掘、机器学习、图像处理等科学研究领域,如果没有数据,则可以通过爬虫从网上抓取;
  • 在Web安全方面,使用爬虫可以对网站是否存在某一漏洞进行批量验证、利用;
  • 在产品研发方面,可以采集各个商城物品价格,为用户提供市场最低价;
  • 在舆情监控方面,可以抓取、分析新浪微博的数据,从而识别出某用户是否为水军;
  • ……

作为一名合格的数据分析师,其完整的技术知识体系必须贯穿数据获取、数据存储、数据提取、数据分析、数据挖掘、数据可视化等各大部分!

技术准备

  1. Python基础语言:
    基础语法、运算符、数据类型、流程控制、函数、对象
    模块、文件操作、多线程、网络编程 … 等

  2. W3C标准:
    HTML、CSS、JavaScript、Xpath、JSON

  3. HTTP标准:
    HTTP的请求过程、请求方式、状态码含义,头部信息以及Cookie状态管理

  4. 数据库:
    MySQL、MongoDB、Redis …

运行流程

在这里插入图片描述1)数据抓取:了解HTTP请求和响应中各字段的含义;了解相关的网络分析工具,主要用于分析网络流量,如:burpsuit等。一般情况,使用浏览器的开发者模式即可;

2)数据解析:了解HTML结构、JSON和XML数据格式,CSS选择器、Xpath路径表达式、正则表达式等,目的是从响应中提取出所需的数据;

3)数据入库:MySQL,SQLite、Redis等数据库,便于数据的存储;

常用技术

  • 常用爬虫库: urllib、requests、selenium、以及scrapy爬虫框架

  • 在数据解析方面,相应的库包括:lxml、beautifulsoup4、re、pyquery。对于数据解析,主要是从响应页面里提取所需的数据,常用方法有:xpath路径表达式、CSS选择器、正则表达式等。其中,xpath路径表达式、CSS选择器主要用于提取结构化的数据。而正则表达式主要用于提取非结构化的数据。

  • 数据的存储:MySQL、MongoDB、Redis

其中,urllib、requests用来获取URL对应的原始响应内容;而selenium通过加载浏览器驱动,获取浏览器渲染之后的响应内容,模拟程度更高。考虑效率,当然能使用urllib、requests等解决的尽量不用selenium,因为后者因需要加载浏览器而导致效率较低。对于数据抓取,涉及的过程主要是模拟浏览器向服务器发送构造好的http请求,常见类型有:get/post。

反爬机制

  1. 基本的反爬虫手段,主要是检测请求头中的字段,比如:User-Agent、referer等。针对这种情况,只要在请求中带上对应的字段即可。所构造http请求的各个字段最好跟在浏览器中发送的完全一样,但也不是必须。
  2. 基于用户行为的反爬虫手段,主要是在后台对访问的IP(或User-Agent)进行统计,当超过某一设定的阈值,给予封锁。针对这种情况,可通过使用代理服务器解决,每隔几次请求,切换一下所用代理的IP地址(或通过使用User-Agent列表解决,每次从列表里随机选择一个使用)。这样的反爬虫方法可能会误伤用户。
  3. 希望抓取的数据是如果通过ajax请求得到的,假如通过网络分析能够找到该ajax请求,也能分析出请求所需的具体参数,则直接模拟相应的http请求,即可从响应中得到对应的数据。这种情况,跟普通的请求没有什么区别。
  4. 基于Java的反爬虫手段,主要是在响应数据页面之前,先返回一段带有Java代码的页面,用于验证访问者有无Java的执行环境,以确定使用的是不是浏览器。

案例讲解

  1. 常规信息爬取:豆瓣网图书Top250信息爬取
  2. Ajax信息爬取:有道词典翻译信息爬取
  3. 动态渲染信息爬取:模拟百度图片搜索信息爬取
  4. Api接口信息爬取:天气预报接口信息爬取
  5. App移动端信息爬取:从京东App中爬取商品信息
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章