爬虫的原理

爬虫是一种模拟浏览器行为的程序,通过发送HTTP/HTTPS请求获取网页内容,并解析所需数据。它按照一定的规则抓取互联网信息,涉及请求、响应、数据解析及存储等多个步骤。在实际操作中,爬虫可能会遇到不同类型的网页和安全限制,需要处理各种HTTP状态码及响应头。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 什么是爬虫?

网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序

原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做

2 爬虫的本质

模拟浏览器打开网页,获取网页中想要的那部分数据

浏览器打开网页的过程如下:

请求的过程:

  1. 浏览器先向地址栏中的url发起请求,并获取相应

  2. 在返回的响应内容(html)中,会带有css、js、图片等url地址,以及ajax代码,浏览器按照响应内容中的顺序依次发送其他的请求,并获取相应的响应

  3. 浏览器每获取一个响应就对展示出的结果进行添加(加载),js,css等内容会修改页面的内容,js也可以重新发送请求,获取响应

  4. 从获取第一个响应并在浏览器中展示,直到最终获取全部响应,并在展示的结果中添加内容或修改————这个过程叫做浏览器的渲染

注:

在爬虫中,爬虫只会请求url地址,对应的拿到url地址对应的响应(该响应的内容可以是html,css,js,图片等)

浏览器渲染出来的页面和爬虫请求的页面很多时候并不一样

所以在爬虫中,需要以url地址对应的响应为准来进行数据的提取


3 HTTP 协议
  • HTTP
    超文本传输协议
    默认端口号:80

  • HTTPS
    HTTP + SSL(安全套接字层),即带有安全套接字层的超本文传输协议
    默认端口号:443

在发送请求,获取响应的过程中 就是发送http或https的请求,获取http或https的响应


4 爬虫的分类

根据被爬网站的数量的不同,我们把爬虫分为:

  • 通用爬虫 :通常指搜索引擎的爬虫(百度、360搜索)
  • 聚焦爬虫 :针对特定网站的爬虫

5 爬虫的流程:

(1) 发送请求: 使用HTTP库向目标站点发起请求,即发送一个Request对象

Request中包含什么?

① URL

url,即统一资源定位符,也就是我们所说的网址;url用来表示互联网上标准资源的路径,互联网上的每个资源都有一个唯一的url


url格式:http:// host [:port] [path]

  • http:协议

  • host:合法的Internet主机域名或IP地址

  • port:端口号,默认端口为80

  • path:请求资源的路径


② 请求方式

  • get:请求获取url位置的资源
  • head:请求获取url位置资源的头部信息
  • post:请求向url位置的资源后附加新的数据
  • put:请求向url位置存储一个资源,并覆盖原url位置的资源
  • patch:请求局部更新url位置的资源,即改变该处资源的部分内容
  • delete:请求删除url位置存储的资源

以上,由于网络安全的限制,我们很难向url去发起put、patch、delete的请求,常用的请求就是get、post


③ 请求头Headers

HTTP常见请求头:

  • Host (主机和端口号)
  • Connection (链接类型)
  • Upgrade-Insecure-Requests (升级为HTTPS请求)
  • User-Agent (浏览器名称)
  • Accept (传输文件类型)
  • Referer (页面跳转处)
  • Accept-Encoding(文件编解码格式)
  • Cookie (Cookie)
  • x-requested-with :XMLHttpRequest (表示该请求是Ajax异步请求)

④ 请求体

请求携带的数据,如 post请求提交表单数据


(2) 获取响应:如果服务器能正常响应,会得到一个Response对象

Response中包含什么?

① 响应状态

  • 200:成功
  • 302:临时转移至新的url
  • 404:找不到该页面
  • 500:服务器内部错误
  • 503:服务不可用,一般是被反爬

② 响应头

如 内容类型,类型的长度,服务器信息、Set-Cookie (对方服务器设置cookie到用户浏览器的缓存)

③ 响应体

包含请求资源的内容,如 html、图片、json


(3) 解析数据

  • 直接处理
  • 正则
  • 解析库:xpath、pyquery
  • json解析

(4) 保存数据

文件形式:txt、cvs、Excel

数据库:mysql、mongodb等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值