Python网络爬虫之requests库

目录

一.网络爬虫的介绍

1.网络爬虫库

2.robot.txt规则

二.requests库

1.requests库的安装

2.get()函数

3.Response对象

Response的属性

 设置编码

返回网页内容

text()

content()

三.提交信息到网页

post()函数

四.会话与代理服务器


一.网络爬虫的介绍

1.网络爬虫库

①urllib库:Python自带的标准库,代码编写略微复杂

requests库:第三方库,在urllib库的基础上建立的,但使用起来更简洁方便

③scrapy库:第三方库,是一个专业应用程序开发的网络爬虫库

selenium库:第三方库,可用于驱动计算机中的浏览器执行相关命令,而无需用户手动操作

2.robot.txt规则

注意不是 网站中的所有信息都允许被爬取,也不是所有的网站都允许被爬取,在大部分网站的根目录存在一个robot.txt文件用于声明此网站中禁止访问的url和可以访问的url

User-agent表示访问网站的引擎,第一个值为*表示所有搜索引擎都需要遵守2-21行的规则

                  第二个值为Wandoujia Spider 表示Wandoujia Spider搜索引擎需要遵守的规则

Disallow表示该搜索引擎不允许访问的url,值为/则表示不允许访问任何内容

Allow表示该搜索引擎允许访问的url

Sitemap网站地图,用于提供网站中所有可以爬取的url

二.requests库

1.requests库的安装

pip install requests -i 镜像源地址

2.get()函数

在requests库中获取html网页内容的方法就是get()函数

get(url,params=None,**kwargs)

url:需要获取的网址

params:可选参数,以字典的形式发送信息,当需要想向网页中提交查询信息时使用

**kwargs:请求采用的可选参数

注意:此时get()函数爬取的网页源代码仅包含原始文本数据(如城市名称),不包含渲染后的资源(如图片、视频)。r是返回的Response对象

import requests
r = requests.get('https://www.ptpress.com.cn/')

部分数据(如搜索关键词)可通过字典参数动态添加到 URL 后(如 ?keyword=excel),适配不同网站的查询格式。search表示搜索

import requests
r = requests.get('https://www.ptpress.com.cn/search?keyword=人工智能')

我们也可以用param参数来添加搜索信息,需要提前将param定义为字典

import requests
info ={'keyword':'人工智能
'}
r = requests.get('https://www.ptpress.com.cn/',params=info)

系统会自动在url后面添加字典信息形式为

https://www.ptpress.com.cn/search?keyword=人工智能'

3.Response对象

Response的属性

关键属性包括:
status_code:服务器返回的状态码(如200表示成功,301表示永久重定向)。
url:实际爬取的网页地址。
encoding、cookies:网页编码和 Cookie 信息。
状态码用于判断请求是否成功(如200为允许爬取,其他代码可能表示拒绝或错误)。

 设置编码

爬取内容出现乱码时,需将响应对象的编码(encoding)与网页实际编码(apparent_encoding)对齐。通过response对象.encoding = response对象.apparent_encoding自动匹配编码(如UTF-8),解决乱码问题。如果设置自动匹配编码后依然出现乱码,需要我们自行设置encoding编码方式
未设置编码时,输出内容可能因默认编码(如ISO-8859-1)与网页编码不匹配而显示乱码。

返回网页内容

Response对象返回网页对象有两种方法text()和content()

text()

以字符串形式返回网页内容

content()

以二进制形式返回网页内容常用于保存网页中的媒体文件,例如

import requests
r = requests.get('https://fileinfo.com/img/ss/xl/jpg_44-2.jpg')
f = open("1.jpg",'wb')
f.write(r.content)
f.close()

三.提交信息到网页

我们用post请求将表单中的数据提交给浏览器

post()函数

post(url,data=None,json=None,**kwarge)
  • url:目标网站地址。
  • data:需要发送的以字典/元组形式提交的信息(如密码修改表单)。
  • json:需要发送的JSON类型的数据
  • **kwargs:请求采用的可选参数

返回值也是一个Response对象

四.会话与代理服务器

会话维持:HTTP无记忆性需通过cookie或session保持连续操作(如翻页爬取)


代理服务器:
作用:避免IP被封禁,通过中间服务器转发请求(如爬取淘宝数据)。
扩展应用:VPN原理类似,通过代理访问受限网站(如Facebook、ChatGPT)。
获取方式:免费代理IP不稳定,推荐付费服务(如香港/新加坡服务器)。

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

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

相关文章

区块链技术详解:从原理到应用

引言 区块链作为一项颠覆性技术,已从加密货币的基石演变为重塑多个行业的创新引擎。本文旨在深入解析其核心原理、关键特性、技术架构、主流应用及未来挑战。一、 区块链核心概念:超越加密货币的分布式账本 本质定义: 区块链是一个去中心化、…

用Finalshell连接服务器后出现文件目录不显示,且刷新报错空指针问题记录

修改SSH配置‌编辑sshd_config‌使用管理员权限编辑/etc/ssh/sshd_config文件,找到Subsystem相关配置。原配置为Subsystem sftp /usr/libexec/openssh/sftp-server使用“i”编辑文件将修改为Subsystem sftp internal-sftp修改完成后使用Esc命令,退出编辑…

C语言:游戏代码分享

小游戏分享 目录 小游戏分享 1.井字棋游戏 2.简单计算器游戏 3.猜单词 4.石头剪刀布游戏 5.猜数字游戏 1.井字棋游戏 「33 棋盘上的思维博弈!与好友轮流落子,抢占先机,连成一线即可获胜。简单规则蕴含无限策略,展现你的战术…

深度学习入门-卷积神经网络(CNN)(下)

1-4、 深度学习入门-卷积神经网络(CNN)(上)-CSDN博客 5、 卷积神经网络(CNN)的实现 简单网络的构成是“Convolution - ReLU - Pooling - Affine - ReLU - Affine - Softmax”: 相关代码&#…

Java 大视界 -- Java 大数据在智能交通智能公交站台乘客流量预测与服务优化中的应用(349)

Java 大视界 -- Java 大数据在智能交通智能公交站台乘客流量预测与服务优化中的应用(349)引言:正文:一、Java 全场景韧性调度系统(新增极端天气 车型适配)1.1 极端天气:暴雪 / 台风的分钟级响应…

数论内容主要包括哪些

数论(Number Theory)是数学中研究整数的性质及其相互关系的一个分支,被誉为“数学中的皇后”。它历史悠久,内容丰富,既包含许多初等、直观的问题,也涉及高深、抽象的理论。数论的主要内容包括以下几个方面&…

springboot打包二次压缩Excel导致损坏

springboot打包二次压缩Excel导致损坏开发时,将Excel文件放到resources下,通过类加载器流读取,返回api用于下载该Excel文件。我发现这样下载的Excel被损坏了,无法打开,推测是springboot打包插件默认对resources下的所有…

huggingface笔记

1. huggingface的下载目录 ~/.cache/huggingface 2. 如何修改hugging face的模型默认下载地址 huggingface的默认下载路径在~/.cache/huggingface/hub/,但模型数据占用空间往往很大,可以用以下方法修改默认下载路径。 方法一:在linux中指定环…

Redis3:Redis数据结构与命令全解析

目录 1、redis数据结构介绍 1.1命令学习方式 1.1.1命令行查询 2、redis的通用命令 2.1查找常见的通用命令 2.2常见的通用命令: 3、String类型 3.1String类型的常见命令 3.2Key的层级格式 3.2.1Key的结构 4、Hash类型 4.1Hash类型 4.2Hash类型常见命令 …

WebSocket 重连与心跳机制:打造坚如磐石的实时连接

在现代 Web 应用中,WebSocket 是实现实时通信的核心技术。但网络环境复杂多变,如何确保连接稳定成为关键挑战。本文将深入剖析 WebSocket 的重连与心跳机制,提供一套经过生产环境验证的解决方案。 一、WebSocket 基础封装 首先我们实现一个具…

【代码】Matlab鸟瞰图函数

用matlab把图像转化为鸟瞰图 代码 clc clear close all I imread(road.png); figure(1) imshow(I) bevSensor load(birdsEyeConfig); birdsEyeImage transformImage(bevSensor.birdsEyeConfig,I); figure(2) imshow(birdsEyeImage)效果

网络编程-java

Socket 套接字 Socket套接字,是由系统提供用于网络通信的技术,是基于 TCP/IP 协议的网络通信的基本单元。基于 Socket 套接字的网络程序开发就是网络编程。 应用层会调用操作系统提供的一组 api ,这组 api 就是 socket api(传输层…

CPU架构、三级缓存以及内存优化屏障

目录 一、三级缓存和内存布局 二、CPU架构 (1)SMP对称对处理器架构 (2)NUMA非统一内存架构 三、RCU机制在内核中的体现 四、内存优化屏障 (1)编译器、CPU优化 (2)优化的问题…

HarmonyOS从入门到精通:动画设计与实现之九 - 实用动画案例详解(下)

HarmonyOS动画开发实战(九):实用动画案例详解(下) 在上篇中,我们围绕加载动画、点赞反馈、下拉刷新等核心交互场景,探讨了如何通过动画提升用户体验。本篇将聚焦界面元素动效与特殊场景动画&…

Node.js 聊天内容加密解密实战教程(含缓存密钥优化)

一、技术方案说明 本方案采用以下技术组合: 加密算法:AES-256-GCM(认证加密,防止篡改)密钥派生:PBKDF2(10万次迭代)缓存机制:内存缓存 定期轮换安全特性:随机…

信息安全基础专业面试知识点(上:密码学与软件安全)

密码学DES加密流程56比特长度的密钥K, 分组长度64比特,密文64比特初始置换 (IP):将输入的64位明文块进行置换,打乱其顺序。分成左右两半: 将置换后的64位数据分成左右两部分,每部分32位。16轮迭代加密: 这是DES的核心&#xff0c…

Windows Server 2025 黄金dMSA攻击漏洞:跨域攻击与持久化访问风险分析

网络安全研究人员近日披露了Windows Server 2025中委托管理服务账户(dMSA,Delegated Managed Service Accounts)存在的"关键设计缺陷"。据Semperis公司向The Hacker News提供的报告显示:"该漏洞可能导致高危害攻击…

解锁数据分析:从基础概念到核心指标的全面指南

在数字化时代,数据已成为驱动业务决策的核心力量。无论是运营一款 APP、管理一家便利店,还是优化在线教育课程,理解数据的本质与关键指标都至关重要。本文将从数据的基本概念出发,拆解运营全流程中的核心指标,并分享数…

DiffPy-CMI详细安装教程

本章教程,主要记录安装DiffPy-CMI的具体安装步骤。 DiffPy-CMI 是一个复杂建模框架,是高度灵活的 Python 模块库,专为晶体、纳米材料及非晶态材料的纳米结构建模而设计。 注意:DiffPy-CMI只支持在Linux和Mac上安装,Windows上是不支持的。 一、准备工作 需要准备一台Linux或…

中国各省市县坡度数据(Tif/Excel)

数据简介 昨天我们分享了中国120m精度的DEM数据(见前文),今天我们根据该数据计算中国的坡度数据,并根据中国省市县行政区划数据将其统计各省市县坡度的最大、最小以及平均值,方便大家研究使用。 基于中国120米精度DEM生成的坡度数据&#xff…