爬虫(一):爬虫基础

基本介绍

网络爬虫是模拟客户端(主要是浏览器)发送请求/接收响应,自动抓取互联网信息的程序

  • 没有明确的法律法规,尽量不要采集个人信息
  • 原则上,只要是客户端能做的事情,爬虫都能做
  • 爬虫只能获取客户端所能展示的数据

学习路径

  1. requests模块非常重要,需要掌握
  2. selenium可以实现非常简单但能用的爬虫
  3. 反爬机制
  4. mongodb只需要知道怎么用mongodb以及怎么与python交互
  5. scrapy爬虫框架
  6. appium用于手机的数据采集

爬虫的作用

  1. 数据采集(用于机器学习舆情监控/数据挖掘)
  2. 软件测试(自动化测试)虫师博客
  3. 抢票
  4. 投票
  5. 网络安全(短信轰炸,web漏洞扫描)

爬虫的分类

根据被爬网站的数量不同,可分为

  • 通用爬虫,如搜索引擎
  • 聚焦爬虫,专门抓取某一类网站

根据是否以获取数据为目的,可分为

  • 功能性爬虫,如投票
  • 数据增量爬虫,如招聘信息

根据url地址和对应的页面内容是否改变,数据增量爬虫可分为:

  • 基于url地址变化、内容也随之变化的爬虫
  • 基于url地址不变,内容变化的爬虫

爬虫的流程

scrapy是这个流程的抽象
url_list -> 发送请求-> 解析响应-> 保存数据

  1. 获取url
  2. 向url发送请求,获取响应(需要http协议)
  3. 如果从响应中提取url,则继续发送请求获取响应
  4. 如果从响应中获取数据,则保存

http协议复习

http与https的概念和默认端口
  • http协议是应用层协议,是发送请求、获取响应需要的
  • https比http安全,但效率低一些
  • HTTP超文本传输协议,默认端口号80,明文传输
  • HTTPS:HTTP+SSL(安全套接字层),默认端口号443,SSL对传输内容进行加密
掌握爬虫关注的请求头和响应头

几个重要请求头:

  • Content-Type
  • Host:
    主机号
  • Connection:
    HTTP和HTTPS架构在TCP/IP之上,先建立Socket链接,keep-alive避免要三次握手四次断开
  • Upgrade-Insecure-Requests:
    如果有更安全的协议,就升级,这就是为什么访问百度抓包可以抓到一个重定向的原因
  • User-Agent
    发请求的浏览器以及机器的信息
    Mozilla是一个基金会,几乎市面上所有浏览器都遵守Mozilla/5.0
  • Referer
    页面跳转处,页面请求是从哪来的,检查请求是否合法,防盗链(图片/视频)
  • Cookie
    保持会话,有时效性
  • Authorization:
    很少出现,自己练习时输入账号密码会用到

重要响应头:

  • Set-Cookie:
    对方服务器设置Cookie到用户浏览器的缓存
常见响应状态码
  • 200:成功
  • 302:跳转,新的url在响应的Location头中给出
  • 303:浏览器对于POST的响应进行重定向至新URL
  • 307:浏览器对于GET的响应重定向
  • 403:资源不可用,服务器理解请求,但拒绝处理(没有权限)
  • 404:找不到该页面
  • 500:服务器内部错误
  • 503:服务器由于维护或负载过重未能答应,响应中可能带有Retry-After响应头(多久之后能重新访问一次);有可能是因为爬虫频繁访问url

所有状态码都不可信
可能服务器识别为爬虫了,也返回200或者500或者其他,所以不能光看状态码,这时尝试浏览器能访问,而爬虫不能访问,就是有可能被识别为爬虫了

Network中的Response得到的源码才是判断依据,而Elements中的源码是渲染之后的源码它不能作为判断依据
在这里插入图片描述

在这里插入图片描述

浏览器的运行过程

客户机发送域名给DNS,DNS返回IP地址
客户机通过IP地址请求服务器,服务器响应

http请求过程
  1. 客户机通过IP地址请求服务器,服务器响应
  2. 浏览器引擎解析响应内容,发现里面需要用到的src,引擎按照顺序发出其他请求并获取相应的响应
  3. 浏览器加载每个获取到的响应,js,css等内容会修改页面内容,js也可以重新发送请求获取响应
  4. 从获取第一个响应并在浏览器中展示,直到获取全部响应,并在站是的结果中添加内容或修改,整个过程叫浏览器的***渲染***

在这里可以看到Initiator,除了第一个,都是引擎下载的
在这里插入图片描述

浏览器展示的结果可以是由多次请求对应的多次响应渲染出来的

爬虫:
只发送指定请求,不会渲染
浏览器:
发送所有请求,进行渲染

发送请求的文件分类
  1. 骨骼文件:HTML,静态文件
  2. 肌肉文件:JS / Ajax请求,产生动态效果
  3. 皮肤文件:CSS / font / 图片
抓包过程
  1. 分别按流程在骨骼、肌肉、皮肤文件中查找数据
  2. 发送请求给目标文件
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值