当前位置: 首页 > news >正文

爬虫基本原理及requests库用法

文章目录

  • 一、爬虫基本原理
    • 1、什么是爬虫
    • 2、爬虫的分类
    • 3、网址的构成
    • 4、爬虫的基本步骤
    • 5、动态【异步】页面和静态【同步】页面
    • 6、请求头
  • 二、requests基本原理及使用
    • 1、chrome 抓包按钮详解
      • 1.1 Elements
      • 1.2 元素定位器
      • 1.3 Network
      • 1.4 All
      • 1.5 XHR
      • 1.6 Preserve log
      • 1.7 手机模式
      • 1.8 清空数据包
      • 1.9 Filter
      • 1.10 Search
      • 1.11 Search all file
    • 2、requests介绍
      • 2.1 概念
      • 2.2 安装方式
      • 2.3 基本使用
      • 2.4 response类对应的方法
        • 2.4.1 获取网页源代码:
        • 2.4.2 获取二进制数据【音乐,视频,图片】
        • 2.4.3 获取响应状态码【基本不用】
        • 2.4.4 获取json数据【常用】
      • 2.5 headers的请求


一、爬虫基本原理

1、什么是爬虫

通俗: 解放人的双手, 去互联网获取数据, 保存数据[数据库, txt, excel, csv, pdf, 压缩文件, image, video, music]

本质: 模拟浏览器, 向服务器发送网络请求, 接受服务器返回的数据, 保存数据

2、爬虫的分类

A、通用爬虫: 百度, google, 搜狗 … 搜索引擎
B、聚焦爬虫: 根据指定的目标, 获取数据, 保存数据

3、网址的构成

例如:https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=李智恩
A、协议部分:https / http – 超文本传输协议
B、域名部分:www.baidu.com – ip地址–<外壳>–域名【方便人的记忆】
C、路径部分:一层一层的信息
D、参数部分:请求时候, 携带必要参数 – &符号链接

4、爬虫的基本步骤

A、准备网址
B、请求网址
C、解析数据
D、保存数据

5、动态【异步】页面和静态【同步】页面

A、打开浏览器
B、访问网址
C、网页空白处右键点击,查看网页源代码
D、在网页源代码中搜索网页所展示的部分(如果能搜到,则是静态网页;如果搜不到,则是动态网页)

6、请求头

A、cookies: 身份标识(登录网站之后会有一段cookies值)
B、反爬字段: referer – 来源于哪个网站
C、浏览器标识: user-agent(用户代理)

二、requests基本原理及使用

1、chrome 抓包按钮详解

1.1 Elements

网页源代码展示

1.2 元素定位器

使用元素定位器,可以准确定位网页所展示的部分,对应的前端代码

1.3 Network

网络调试台,可以用于抓包

1.4 All

使用All抓包时,会显示所有的包

1.5 XHR

使用XHR抓包时,只会显示AJAX包,也称为动态数据包,一般用于抓取动态加载的数据

1.6 Preserve log

是否需要保存历史抓包记录,点亮后即为保存历史记录

1.7 手机模式

是否选择手机模式,进行页面访问,一般用于手机抓包

1.8 清空数据包

将当前数据包进行清空,方便更准确的抓取数据包

1.9 Filter

过滤查询,requests_headers

1.10 Search

搜索文本内容所在的包

1.11 Search all file

搜索文本内容所在的包

2、requests介绍

2.1 概念

非常强大的爬虫请求库, 解决日常90%爬虫

2.2 安装方式

pip install requests

2.3 基本使用

  1. 导包: import requests
  2. 使用: respone = requests.get(url, 反爬请求头)

2.4 response类对应的方法

2.4.1 获取网页源代码:

A、text
B、content.decode()

2.4.2 获取二进制数据【音乐,视频,图片】

content

2.4.3 获取响应状态码【基本不用】

response.status_code
200: 请求成功

2.4.4 获取json数据【常用】

网站数据很多都是json数据, 做一件事情: json --> 字典

A、response = requests.get(url).textresponse = json.loads(response)
B、response = requests.get(url).json()

2.5 headers的请求

headers请求头的作用是对爬虫进行伪装,headers的格式是字典,示例如下:

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'}

其中添加的请求头参数个数,可以根据实际需求添加

相关文章:

  • 从“图形可视化”到“图生代码”,低代码平台的新挑战
  • AI模型发展之路:开源还是闭源?
  • YashanDB与慧点科技完成兼容互认证
  • 我把PostgreSQL最核心的插件撸干净了!!!
  • 搜索引擎的设计与实现(四)
  • PostgreSQL重置密码(忘记密码)
  • c/c++使用void*实现类型通配
  • 短视频都是怎么剪的:四川京之华锦信息技术公司
  • 景源畅信电商:抖店需要的成本高吗?
  • Python 魂斗罗的音效和动漫效果
  • Qt moc系统的黑魔法?
  • KMP算法【C++】
  • 【MySQL精通之路】InnoDB(6)-磁盘结构(6)-Undolog
  • 【C语言】程序员自我修养之文件操作
  • 初始化是什么
  • JavaScript设计模式系列一:工厂模式
  • scrapy学习之路4(itemloder的使用)
  • STAR法则
  • vue的全局变量和全局拦截请求器
  • 百度地图API标注+时间轴组件
  • 机器学习学习笔记一
  • 前端_面试
  • 前端技术周刊 2019-02-11 Serverless
  • 用jQuery怎么做到前后端分离
  • 鱼骨图 - 如何绘制?
  • 怎样选择前端框架
  • kubernetes资源对象--ingress
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • ​flutter 代码混淆
  • ​第20课 在Android Native开发中加入新的C++类
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #Z2294. 打印树的直径
  • (6)STL算法之转换
  • (Oracle)SQL优化技巧(一):分页查询
  • (TOJ2804)Even? Odd?
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (转)visual stdio 书签功能介绍
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .NET 4.0中的泛型协变和反变
  • .NET CLR基本术语
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .NET业务框架的构建
  • []sim300 GPRS数据收发程序
  • [Android] 修改设备访问权限
  • [Android]将私钥(.pk8)和公钥证书(.pem/.crt)合并成一个PKCS#12格式的密钥库文件
  • [boost]使用boost::function和boost::bind产生的down机一例
  • [Bug]使用gradio创建应用提示AttributeError: module ‘gradio‘ has no attribute ‘inputs‘
  • [BZOJ1008][HNOI2008]越狱
  • [C#]获取指定文件夹下的所有文件名(递归)
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型