爬虫基础

本文介绍了爬虫的基础知识,包括爬虫的概念、语言选择、分类及其优缺点。讲解了聚焦爬虫的设计思路,强调了robots协议的重要性。还探讨了HTTP协议的相关内容,如请求方法、状态码和反爬机制。此外,文章深入介绍了正则表达式(re模块)的使用,并详述了requests库的高级功能,如文件上传、会话维护和代理设置。最后提到了爬虫的伦理准则。
摘要由CSDN通过智能技术生成

爬虫概念

爬虫又称网页蜘蛛或网络机器人
	是模拟人操作客户端(浏览器、app)向服务器发起请求,抓取数据的自动化程序或脚本。
    模拟:用爬虫程序伪装出人的行为, 避免被服务识别为爬虫程序 。
    客户端:浏览器、app都可实现人与服务器之间的交互
    自动化:爬取的数据往往量很大(百万、千万条),所以需要自动化获取

爬虫语言

PHP 并发能力差,多多进程多线程支持不好,数据量较大爬虫效率低
C/C++ 效率高,但是学习成本高,对程序员要求高,市场需求少,目前还在研究层面
Java 代码臃肿,代码量大,维护成本高,开发效率低,需求比较旺盛
Python 语法简单,学习成本低,对新手友好,有大量的库和框架。目前处于爬虫的主导地位
Go

爬虫分类

通用爬虫:搜索引擎(搜索引擎不是通用爬虫,通用爬虫只提供数据)
聚焦爬虫:聚焦爬虫指针对某一领域根据特定要求实现的爬虫程序, 抓取需要的数据(垂直领域爬取)
增量式爬虫:监测某一网站,若有更新,爬取其更新数据
深度爬虫:爬取的数据隐藏在form表单中

通用爬虫

功能: 访问网页 -> 抓取数据 -> 数据处理 -> 提供检索服务  
流程:
    1.给定一个起始URL, 存于爬取队列中       
    2.爬虫程序从队列中取出url, 爬取数据        
    3.解析爬取数据, 获取网页内的所有url, 放入爬取队列
    4.重复第二个步骤

1577416615582

缺点
1.抓取的内容多数无用        
2.无法精确获取数据 
协议: robots协议 --> 约定哪些内容允许哪些爬虫抓取
1.无需遵守, 该协议适用于通用爬虫, 而我们写的是聚焦爬虫        
2.查看方法: 网站/robots.txt, 如https://www.baidu.com/robots.txt
聚焦爬虫

概念:聚焦爬虫指针对某一领域根据特定要求实现的爬虫程序, 抓取需要的数据(垂直领域爬取)

设计思路
(1).确定爬取的url, 模拟浏览器请服务器发送请求
(2).获取响应数据并进行数据解析
(3).将目标数据持久化到本地

服务器常见端口

ftp文件传输协议:21
ssh远程登录会话:22
mysql关系型数据库:3306
MongoDB非关系型数据库:27017
Redis非关系型数据库:6379

httphttps的区别

1、https协议需要到ca申请证书,一般需要费用

2、http是超文本传输协议,信息是明文传输,https是具有安全性的加密传输协议

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443

4、http的连接很简单,是无状态的,https协议是由ssl+http协议构建的可进行加密传输、身份认证的网络协议,更加安全

OSI模型七层

7.应用层

6.表示层

5.会话层

4.传输层

3.网络层

2.数据链路层

1.物理层

TCP/IP协议五层

5.应用层(HTTP、HTTPS、FTP(文件传输)、SSh(远程登录会话))
    http
    https:比http多了ssl安全套接层

4.传输层(TCP、UDP)
	tcp:基于字节流的流式传输,传输可靠,面向连接
        1)有序性:发出前对数据包编号,接收时按照编号重组
        2)正确性:checksum函数进行校验,发送和接收都计算校验和
        3)可靠性:超时重发
        4)可控性:滑动窗口协议和拥塞控制算法来实现发送和接收的同步
    udp:面向无连接的用户数据报协议,传输不可靠
        1)无连接,数据可能损坏或丢失
        2)报文小,传输速度快
        3)适用于吞吐量大的网络传输,可以在一定程度上承受数据丢失

3.网络层(IP协议)

2.数据链路层
    arp协议:通过ip找mac
    交换机不识别ip,但是识别mac(电脑出厂唯一标识)
        1)发送人发送数据包(IP)到交换机
        2)交换机通过广播方式向所有用户发送此包,用户进行解析,IP对的向交换机发送包(包含mac)
        3)交换机进行单播
        
1.物理层(以太网协议)

请求方法

- GET: 请求页面, 并返回页面内容  # 重点
- POST: 用于提交表单数据或上传文件, 数据包含在请求体中  # 重点
- PUT: 从客户端向服务器传送的数据取代指定文档中的内容
- DELETE: 请求服务器删除指定的页面
- HEAD: 类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头
- CONNECT: 把服务器当作跳板,让服务器代替客户端访问其他网页
- OPTIONS: 允许客户端查看服务器的性能
- TRACE: 回显服务器收到的请求,主要用于测试或诊断

请求头

请求头,用来说明服务器要使用的附加信息. 重点掌握: Accept, Cookie, Referer, User-Agent
1.Accept:请求报头域,用于指定客户端可接受哪些类型的信息。  # 重点(*/*)
2.Cookie:也常用复数形式 Cookies,这是网站为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能是维持当前访问会话。例如,我们输入用户名和密码成功登录某个网站后,服务器会用会话保存登录状态信息,后面我们每次刷新或请求该站点的其他页面时,会发现都是登录状态,这就是Cookies的功劳。Cookies里有信息标识了我们所对应的服务器的会话,每次浏览器在请求该站点的页面时,都会在请求头中加上Cookies并将其发送给服务器,服务器通过Cookies识别出是我们自己,并且查出当前状态是登录状态,所以返回结果就是登录之后才能看到的网页内容。  # 重点
3.Referer:此内容用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如作来源统计、防盗链处理等。  # 重点
4.User-Agent:简称UA,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本、浏览器及版本等信息。在做爬虫时加上此信息,可以伪装为浏览器;如果不加,很可能会被识别出为爬虫  # 重点
5.x-requested-with :XMLHttpRequest   # 代表ajax请求
5.Accept-Language:指定客户端可接受的语言类型。
6.Accept-Encoding:指定客户端可接受的内容编码
7.Content-Type:也叫互联网媒体类型(Internet Media Type)或者MIME类型,在HTTP协议消息头中,它用来表示具体请求中的媒体类型信息。例如,text/html代表HTML格式,image/gif代表GIF图片,application/json代表JSON类型

状态码

200系列:
	200   成功         服务器已成功处理了请求  # 重点

300系列:
    301    永久移动     请求的网页已永久移动到新位置,即永久重定向  # 重点
    302    临时移动     请求的网页暂时跳转到其他页面,即暂时重定向  # 重点

400系列:
    400    错误请求     服务器无法解析该请求  # 重点
    401    未授权       请求没有进行身份验证或验证未通过
    403    禁止访问     服务器拒绝此请求  # 重点
    404    未找到       服务器找不到请求的网页

500系列
    500    服务器内部错误   服务器遇到错误,无法完成请求  # 重点
    501    未实现       服务器不具备完成请求的功能
    502    错误网关     服务器作为网关或代理,从上游服务器收到无效响应
    504    网关超时     服务器作为网关或代理,但是没有及时从上游服务器收到请求
    505    HTTP版本不支持   服务器不支持请求中所用的HTTP协议版本

反爬机制跟反反爬策略

UA检测   --  UA伪装(User-Agent)

代码

# 请求头
headers={
   
    # UA伪装
    'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/' + 
    '537.36(KHTML,likeGecko)Chrome/75.0.3770.142Safari/537.36'
}

# url路由
url='https://www.zhihu.com/search?'

# 拼装到url中的参数,根据具体浏览器具体分析
params={
   'q':keyword}
代理ip
proxies={
   
    # https协议
    'https':'http://IP:port',
    # http协议
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值