网络爬虫相关

一、爬虫的基础内容

1、基本概念和用途

1.1、概念:

  • 模拟浏览器、发送请求,获取响应。(只能获取客户端所展示出来的数据)

1.2、特点:知识碎片化,针对不同的网站对应的方法也不同。

  • 爬虫:模拟客户端访问,抓取数据。
  • 反爬:保护重要数据,阻止恶意网络攻击
  • 反反爬:针对反爬的措施。

1.3、作用

  1. 数据采集
  2. 软件测试
  3. 抢票
  4. 网络安全
  5. web漏洞扫描

2、爬虫的分类

2.1、根据爬取网站的数量,可以分为

2.1.1、通用爬虫

①特点:爬取网站数量没有上线。

示例:搜索引擎

2.1.2、聚焦爬虫(*)

①特点:爬取网站数量有上限,有明确的目标。

②分类:

功能性爬虫

①特点:不获取数据,只为实现某一功能。

示例:投票 / 抢票 / 短信轰炸等。

数据增量性爬虫

①特点:获取数据用于后续分析

②分类

  • url与数据同时变化 -- 整条新数据
  • url不变,数据裱花 -- 数据部分更新

3、爬虫的基本流程

3.1、流程

  • url(网站资源定位符)
  • 对url发送网络请求,获取网络请求的响应
  • 解析响应,提取数据
  • 保存数据
3.1.1、确认目标:目标url:www.baidu.com
3.1.2、发送请求:发送网络请求,获取到特定的服务端给你响应。
3.1.3、提取数据:从响应中提取特定的数据 jsonpath / xpath / re
3.1.4、保存数据:本地(html、json、txt)、数据库

获取到的响应中,有可能会提取到还需要继续发送请求的url,可以拿着解析到的url继续发送请求

robots协议并不是一个规范,只是约定俗成。

二、http协议以及请求头

1、网络通信

1.1、步骤

  • 电脑(浏览器): url -- www.baidu.com 域名
  • DNS服务器:IP地址标注服务器,返回响应
  • DNS服务器返回IP地址给浏览器
  • 浏览器拿到IP地址去访问服务器,返回响应
  • 服务器返回给我们的响应数据:html / css / js / jpg......

1.2、实际原理

一个请求只能对应一个数据包(文件)

2、http协议和https协议

2.1、http协议(超文本传输协议)

  • 超文本:不仅仅限于文本,还包括图片、音频、视频。
  • 传输协议:指使用共用约定的固定格式来传递转换成字符串的超文本内容。
2.1.1、作用
  • 规定了服务器和客户端互相通信的规则。
2.1.2、http请求/响应的步骤
  • 客户端连接到web服务器
  • 发送http请求
  • 服务器接受请求返回响应
  • 释放连接tcp连接
  • 客户端解析html内容
2.1.3、请求头

请求方式:get 和 post

get:向服务器要资源

post:向服务器提交资源

  • User-Agent:模拟正常用户
  • cookie:登录保持
  • referer:当前这一次请求时由哪个请求过来的

抓包得到的响应内容才是判断依据,elements中的源码是渲染之后的源码,这个不能作为判断标准。

2.1.4、字符串编码解码

编码 -- encode()

字符串转换成二进制字符串 str 转换成 bytes

解码 -- decode()

二进制字符串转换成字符串 bytes 转换成 str

三、requests库的介绍

1、requests基本使用

requests模块作用:发送http请求,获取响应数据。

requests模块式第三方模块,需要安装:

1.1、安装命令: -- pip install requests
1.2、基本使用:
python 复制代码
import requests

# 目标url
url = 'https://www.baidu.com'

# 向目标url发送get请求
response = requests.get(url)

# 打印响应内容

#将其编码设置为UTF-8
response.encoding = 'utf-8'

print(response.text)

# print(response.content.decode())    默认UTF-8解码

使用requests库保存图片:

python 复制代码
import requests

# 确定url
url = 'https://img0.baidu.com/it/u=3225468693,477076843&fm=253&fmt=auto&app=138&f=JPEG?w=1115&h=800'

# 发送请求,获取响应
res = requests.get(url)
print(res.content)

# 保存响应
with open('1.jpg', 'wb') as f:
    f.write(res.content)
1.3、常用的属性或方法
  • response.url 响应的url。有时候响应的url和请求的url并不一致。
  • response.status_code 响应状态码。
  • response.request.headers 响应对应的请求头。
  • response.headers 响应头
  • response.cookies 响应的cookie(经过了set-cookie动作。返回cookieJar类型)
1.4、其他属性

response.text 和 response.content 的区别:

text: str类型, requests模块自定根据http头部对响应的编码作出有根据的推测。

content: bytes类型, 可以通过decode()解码。

2、用户代理

请求头中user-agent字段必不可少,表示客户端操作系统以及浏览器的信息。

示例

python 复制代码
import requests

url = 'https://www.baidu.com/'

# 构建请求头
header = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36'
}

# 带上user-agent发送请求
# headers参数接受字典形式的请求头,请求头字段名为key,值为value
response = requests.get(url, headers=header)

print(response.content.decode())

添加user-agent的目的是为了让服务器认为是浏览器在发送请求,而不是爬虫在发送请求

相关推荐
0思必得01 小时前
[Web自动化] Selenium处理滚动条
前端·爬虫·python·selenium·自动化
vx_biyesheji00012 小时前
豆瓣电影推荐系统 | Python Django 协同过滤 Echarts可视化 深度学习 大数据 毕业设计源码
大数据·爬虫·python·深度学习·django·毕业设计·echarts
深蓝电商API3 小时前
爬虫IP封禁后的自动切换与检测机制
爬虫·python
喵手4 小时前
Python爬虫实战:公共自行车站点智能采集系统 - 从零构建生产级爬虫的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集公共自行车站点·公共自行车站点智能采集系统·采集公共自行车站点导出csv
喵手4 小时前
Python爬虫实战:地图 POI + 行政区反查实战 - 商圈热力数据准备完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·地区poi·行政区反查·商圈热力数据采集
芷栀夏5 小时前
从 CANN 开源项目看现代爬虫架构的演进:轻量、智能与统一
人工智能·爬虫·架构·开源·cann
喵手20 小时前
Python爬虫实战:HTTP缓存系统深度实战 — ETag、Last-Modified与requests-cache完全指南(附SQLite持久化存储)!
爬虫·python·爬虫实战·http缓存·etag·零基础python爬虫教学·requests-cache
喵手21 小时前
Python爬虫实战:容器化与定时调度实战 - Docker + Cron + 日志轮转 + 失败重试完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·容器化·零基础python爬虫教学·csv导出·定时调度
喵手1 天前
Python爬虫实战:全站 Sitemap 自动发现 - 解析 sitemap.xml → 自动生成抓取队列的工业级实现!
爬虫·python·爬虫实战·零基础python爬虫教学·sitemap·解析sitemap.xml·自动生成抓取队列实现
iFeng的小屋1 天前
【2026年新版】Python根据小红书关键词爬取所有笔记数据
笔记·爬虫·python