第十四天-网络爬虫基础

目录

1.什么是爬虫

2.网络协议

OSI七层参考模型

TCP/IP模型

1.应用层

2.传输层

3.网络层

3.HTTP协议

1.介绍

2.http版本:

3.请求格式

4.请求方法

5.HTTP响应

状态码:

6.http如何连接

4.Python requests模块

 1.安装

2.使用get/post

3.响应response

4.发送自定义请求头

5.请求超时

6.设置cookies

7.设置代理

8.ssl证书效验

9.异常

10.demo


1.什么是爬虫

1.爬虫(又被称为网页蜘蛛,网络机器人),是按照一定规则,自动的抓取万维网中的程序或者脚本,是搜索引擎的重要组成;比如:百度、

2.爬虫应用:1.搜索引擎,2.数据分析,3.人工智能,4.薅羊毛(抢车票)

3.常见爬虫产品:神箭手、八爪鱼、造数、后裔采集器

4.什么事是爬虫工程师:我们不生成数据我们是数据的搬运工

5.爬虫工程师的基础

        1.python编程基础

        2.linux系统操作

        3.http协议

        4.数据库的增删改查

2.网络协议

1. 协议可以理解为“规则”,是数据传输和数据的解释和规则

OSI七层参考模型

TCP/IP模型

1. 1974年诞生,5层协议

1.应用层

基于tcp和udp

1.http:超文本传输协议,基于tcp,使用80端口号,适用于从www服务器传输超文本到本地浏览器的传输协议

2.SMTP:用于简单的邮件传输协议,基于tcp,使用25端口号,是一组2用于由源地址到目的地传送邮件的规则,用来控制信件的发送,中转。

3.FTP:文件传送协议,基于tcp,一般上传下载用FTP服务,数据端口20,控制端口21

4.telnet:远程登录协议,基于tcp,使用23端口,是internet远程登录服务的标准协议和主要方式。为用户提供了本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序链接到服务器。使用明码传送,保密性差,简单方便。

5.dns:域名解析,基于UDP,使用53端口,提供域名到ip之间的转换

6.SSH:安全外壳协议,基于tcp,使用端口22,为建立在应用层和传输层基础上的安全协议,SSH是目前比较可靠,专门为远程登录会话和其他网络服务提供安全性的协议

2.传输层

1. TCP: 传输控制协议,一种面向链接的可靠的,基于字节流的传输层通信协议。

2.UDP:用户数据报协议,一种无链接的通信协议,不可靠,基于报文的传输层通信协议;

3.SCTP: 流量传输控制协议,一种面向连接的流传输协议,是tcp的升级改善tcp的不足

4.MPTCP:多路径传输协议。

3.网络层

1. IP:Internet协议。通过路由选择将下一条ip封装后交给接口层。ip数据报是无连接服务。

2. ICMP:Internet控制报文协议,是网络层的补充。用于在P主机、路由器之间传递控制消息,检测网络通不通,主机是否可达,路由是否可用等网络本身的消息;如:ping ip地址 就是使用本协议

3.ARP: 地址解析协议,是通过目标设备的ip地址,查询目标设备的mac地址,以保证通信的顺利进行;

4.RARP:反向地址解析协议。

3.HTTP协议

1.介绍

HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最广泛的一种网络协议,他基于TCP的应用层协议,客户端和服务端进行通信的一种规则,他的模式非常简单,就是客户端发起请求,服务器响应请求;

2.http版本:

目前使用最多的是HTTP/1.1

3.请求格式

4.请求方法

5.HTTP响应

  

状态码:

6.http如何连接

1.dns域名解析

2. 建立链接-tcp三次握手

3.发送http请求

如:post、get请求等

4.断开连接-tcp四次挥手

4.Python requests模块

1. request是一个简单的python HTTP库

2.英文文档:Requests: HTTP for Humans™ — Requests 2.31.0 documentation

 1.安装

pip install requests

import requests

2.使用get/post

1. get:

response=requests.get(url="网址")

#构造get 参数 #返回 网址?key=value

data={"key":"value"}

response=requests.get(url="网址",params=data)

print(response.url)

2.post

data={}

response=request.post("网址",data=data)

3.响应response

1. 获取访问头

response.headers

2.获取返回体

response.text

3.获取json

response.json()

4.获取字节码:content

与text两者区别在于,content中间存的是字节码,而text中存的是Beautifulsoup根据猜测的编码方式将content内容编码成字符串

response.content

5.响应状态码:status_code

1. 200:为成功

response.status_code

6.获取请求头

response.request.headers

7.查看cookies

cookies=response.cookies

cookies["获取值"]

4.发送自定义请求头

header={}

resposne.get(url="",headers=header)

5.请求超时

#timeout 默认单位:秒

resposne.get(url="",timeout=0.001)

6.设置cookies

#使用字典构建cookies

cookies=dict(key=value)

response=requests.get(url="网址",cookies=cookies)

7.设置代理

1. 解决封禁ip问题

2.伪装真实IP地址,隐藏请求

3.代理免费的不好用,一般推荐付费代理iP;大家自行寻找

4.ip池和隧道代理的区别

 5.使用:

proxy={

        "http":"代理地址",

        "https":"代理地址"

}

response=requests.get(url="",proxies=proxy)

8.ssl证书效验

1. Requests可以为https请求验证ssl证书,就像web浏览器一样

2.参数verify:默认开启True, ,如ssl验证不通过则会报错

response=requests.get(url="",verify=True)

9.异常

10.demo

1. 下载图片

#下载图片
response_img=requests.get("https://p.qqan.com/up/2024-2/17091001248368361.jpg")
with open("17091001248368361.jpg","wb")  as f:f.write(response_img.content)

2.保存登录凭证

使用requests.session() 自动化记录登录信息

#定义session()

session=requests.session()

#登录

login_response=session.post("登录接口",data=data)

#访问

data_response=session.post("业务页面",data=data)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/268212.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态规划5,粉刷房子,买卖股票的最佳时期

粉刷房子 思路: 1.经验题目要求 dp[i][0] 表示:粉刷到 i 位置的时候,最后一个位置粉刷上红色,此时的最小花费。 dp[i][1] 表示:粉刷到 i 位置的时候,最后一个位置粉刷上蓝色,此时的最小花费。…

java学习(常用类)

一、包装类(针对八种基本数据类型相应的引用类型--包装类. 1)包装类和基本数据类型的相互转换 装箱:基本类型->包装类型 拆箱:包装类型->基本类型 //以下是int类型和char类型演示。 public class temp1 {public static void main(St…

TOMCAT的安装与基本信息

一、TOMCAT简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为&#xff0c…

Rust调用同级目录中的rs文件和调用下级目录中的rs文件

一、Rust调用同级目录中的rs文件 Rust新建工程demo02,src文件夹下面新建test.rs文件,这样main.rs文件与它属于同级目录中。 关键点:导入test文件和test文件中的Ellipse模块 mod test;//导入test模块(文件) use test…

MySQL-MHA搭建、故障测试

一、架构说明 MHA(Master High Availability)是一个用于 MySQL 主从复制管理和自动故障转移的开源工具集。MHA 的主要目的是提供 MySQL 环境的高可用性和自动故障转移功能,确保在主库发生故障时能够快速切换到备库,降低业务中断时…

Android 性能优化--APK加固(1)混淆

文章目录 为什么要开启混淆如何开启代码混淆如何开启资源压缩代码混淆配置代码混淆后,Crash 问题定位结尾 本文首发地址:https://h89.cn/archives/211.html 最新更新地址:https://gitee.com/chenjim/chenjimblog 为什么要开启混淆 先上一个 …

架构设计:生产消费模型

1. 引言 在现代软件系统中,处理大量数据和消息是一项重要的任务。生产消费模型作为一种经典的并发模式,在解决数据生产和消费之间的关系上发挥着关键作用。该模型通过有效地管理生产者和消费者之间的通信和数据流动,实现了系统组件之间的解耦…

LASSO算法

LASSO (Least Absolute Shrinkage and Selection Operator) 是一种回归分析的方法,它能够同时进行变量选择和正则化,以增强预测准确性和模型的解释性。LASSO通过在损失函数中加入一个L1惩罚项来实现这一点。该惩罚项对系数的绝对值进行约束。 基本概念 …

python中的类与对象(3)

目录 一. 类的多继承 二. 类的封装 三. 类的多态 四. 类与对象综合练习:校园管理系统 一. 类的多继承 在(2)第四节中我们介绍了什么是类的继承,在子类的括号里面写入要继承的父类名。上一节我们只在括号内写了一个父类名&…

【详识JAVA语言】面向对象程序三大特性之三:多态

多态 多态的概念 多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。 多态实现条件 在java中要实现多态,必须要满足如下几个条件,缺一不可&#xf…

基于阿里云OSS上传图片实战案例

一、案例描述 基于Springboot框架实现一个上传图片到阿里云服务端保存的小案例。 二、准备工作 基于Springboot免费搭载轻量级阿里云OSS数据存储库(将本地文本、照片、视频、音频等上传云服务保存)-CSDN博客 三、代码 新建这两个类:一个…

【数据结构初阶】九、五种比较排序的讲解和实现(直接插入 \ 希尔 \ 直接选择 \ 堆 \ 冒泡 -- C语言)

相关代码gitee自取: C语言学习日记: 加油努力 (gitee.com) 接上期: 【数据结构初阶】八、非线性表里的二叉树(二叉树的实现 -- C语言链式结构)-CSDN博客 排序 排序的概念 所谓排序,就是使一串记录,按照…

网络编程(IP、端口、协议、UDP、TCP)【详解】

目录 1.什么是网络编程? 2.基本的通信架构 3.网络通信三要素 4.UDP通信-快速入门 5.UDP通信-多发多收 6.TCP通信-快速入门 7.TCP通信-多发多收 8.TCP通信-同时接收多个客户端 9.TCP通信-综合案例 1.什么是网络编程? 网络编程是可以让设…

Web开发学习-HTML

第一天 固定结构 如何注释&#xff1a;vs code中使用ctrl/可以达到注释这一行的效果&#xff0c;同时再次按下ctrl/&#xff0c;可以取消注释。 HTML标签的结构 例如&#xff1a;<strong>字体加粗</strong>这个就是双标签&#xff0c;<br>换行标签&#xff…

[RoarCTF 2019]Easy Calc

这题考查的是: 字符串解析特性目录读取文件内容读取 字符串解析特性详解&#xff1a;PHP字符串解析特性 &#xff08;$GET/$POST参数绕过&#xff09;&#xff08;含例题 buuctf easycalc&#xff09;_参数解析 绕过-CSDN博客 ascii码查询表&#xff1a;ASCII 表 | 菜鸟工具 …

flurl升级之后没有FlurlNewtonsoftJsonSerializer

新建NewtonsoftJsonSerializer.cs /// <summary> /// ISerializer implementation based on Newtonsoft.Json. /// Default serializer used in calls to GetJsonAsync, PostJsonAsync, etc. /// </summary> public class NewtonsoftJsonSerializer : IJsonSerial…

【贪心算法】Leetcode 455.分发饼干 376. 摆动序列 53. 最大子数组和

【贪心算法】Leetcode 455 分发饼干 376. 摆动序列【规律很多】53. 最大子数组和 455 分发饼干局部最优推全局最优&#xff1a;尽量用大饼干去满足大胃口的小朋友 376. 摆动序列【规律很多】思想&#xff1a;注意考虑一个坡度留首尾两个点、平坡、首尾 53. 最大子数组和【好思想…

18个惊艳的可视化大屏(第12辑):智慧校园与教育方向

智慧校园可视化大屏通过数据可视化技术&#xff0c;将学校各个方面的数据信息进行展示&#xff0c;可以提高信息公开透明度、优化校园管理、提高学生教育质量和提高校内活动宣传效果等。 1提高信息公开透明度&#xff1a; 通过大屏幕展示校园各个方面的数据信息&#xff0c;可…

MyBatisPlus(SpringBoot版)的分页插件

目录 一、前置工作: 1.整体项目目录结构 2.创建普通javamaven项目。 3.导入依赖&#xff0c;改造成springboot项目 4.配置启动类 5.创建service接口及其实现类 6.创建接口Mapper 7.配置数据源 8.创建数据库表 二、使用MP&#xff08;mybatisplus&#xff09;的分页插件 二、使…

COMPOSER安装使用WIN下升级PHP-V

想用TP6使用phpspreadsheet但是说我PHP版本低&#xff0c;原来是PHP7.0 composer要求至少7.4 直接修改环境变量&#xff0c;把PHP目录切换到7.4 composer升级比较简单&#xff0c;在PHP目录下CMD然后官网的命令执行下即可 下面就可以在TP根目录下执行命令安装PHPSPREADSHEET…