爬虫笔记(一)——Requests库
文章目录
- 写在前面
- 一、Requests库入门
- 1.Requests库的安装
- (1)安装Requests库
- (2)测试Requests库
- 2.Requests库的get()方法
- (1) get()方法简介
- (2) Response对象的属性
- 3.爬取网页通用的代码框架
- (1)理解Requests库的异常
- (2)通用代码框架
- 4.Http协议
- (1)URL和URI
- (2)超文本
- (3)http协议介绍
- (4)http协议和https协议的区别
- (5)http协议对资源的操作
- 5.Requests库方法
- 6.Requests方法的13个访问控制参数
- 二、网络爬虫的“盗亦有道”
- 1.网络爬虫引发的问题
- 2.网络爬虫的尺寸
- 3.网络爬虫的限制
- 4.Robots协议
- 三、Requests库网络爬虫实战(五个实例)
- 引用源自
- 写在最后
写在前面
因为最近在中国大学MOOC网上学习嵩天老师(北京理工大学)的爬虫课程,所以为了方便自己以后编程时查找相关函数和方法,也为了方便各位小伙伴们学习,整理这篇关于爬虫中Requests库的基本知识点。本篇涉及图的地方,我会截取课程内容的截图(因为我实在是懒得画图了),涉及表的地方我会重新制作,一是为了美观,二是为了加深印象,因为函数和方法太多不常用的话就会遗忘。好了。话不多说,开干!
一、Requests库入门
1.Requests库的安装
(1)安装Requests库
使用管理员权限打开command控制台
输入如下代码即可安装
pip install requests
(2)测试Requests库
测试代码:
import requests
r = requests.get("http://www.baidu.com")
r.status_code #检测请求网页的状态码
#输出200
r.encoding = 'utf-8'
r.text
#输出网页内容
2.Requests库的get()方法
(1) get()方法简介
r.requests.get(url) 构造一个向服务器请求资源的requests对象,返回一个包含服务器资源的requests对象requests.get(url,params=None,**kwarge)url:获取页面的url链接params:url中的额外参数,字典或字节流格式**kwargs:12个控制访问的参数
Request:构造一个向服务器请求资源的Request对象
Response:返回一个包含服务器资源的Response对象
(2) Response对象的属性
属性 | 说明 |
---|---|
r.status_code | HTTP请求的返回状态,200表示连接成功,404表示失败 |
r.text | HTTP响应内容的字符串形式,即 url对应的页面内容 |
r.encoding | 从HTTP header中猜测的响应内容编码方式 |
r.apparent_encoding | 从内容中分析出的响应内容编码方式(备选编码方式) |
r.content | HTTP响应内容的二进制形式 |
注
r.encoding:如果header中不存在charset字段,则认为编码为 ISO-8859-1
3.爬取网页通用的代码框架
(1)理解Requests库的异常
异常 | 说明 |
---|---|
requests.ConnectionError | 网络连接异常,如DNS查询失败、拒绝连接等 |
requests.HTTPError | HTTP错误异常 |
requests.URLRequired | URL缺失异常 |
requests.TooManyRedirects | 超过最大重定向次数,产生重定向异常 |
requests.ConnectTimeout | 连接远程服务器超时异常 |
requests.Timeout | 请求URL超时,产生异常 |
(2)通用代码框架
import requests
def getHTMLText(url):
try:r=requests.get(url,timeout=30)r.raise_for_status() #如果状态不是200,引发HTTPError异常r.encoding = r.apparent_encoding #使得返回内容的解码是正确的return r.text
except:return “产生异常”
if _name_==”_main_”:url=”http://baidu.com”print(getHTMLText(url))
4.Http协议
(1)URL和URI
URL是URI的子集,URI还包括URN,在互联网中,我们一般的网页链接可以被称为URL或者URI,大多数人称为URL。
URL:URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源。
(2)超文本
我们平常在网站浏览的网页就是超文本解析而成的,这些源代码是一系列的HTML代码,如img:显示图片,p:指定显示段落等。HTML可以被称为超文本。
(3)http协议介绍
HTTP,Hypertext Transfer Protocol,超文本传输协议
HTTP是一个基于“请求与响应”模式的、无状态的应用层协议
HTTP协议采用URL作为定位网络资源的标识
URL格式 http://host[:port][path]
host:合法的Internet主机域名或IP地址
port:端口号,缺省端口为80
path:请求资源的路径
URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源
(4)http协议和https协议的区别
http:
- 超文本传输协议
- 默认端口:80
https:
- HTTP+SSL(安全套接字层)
- 默认端口:443
https比http更加安全但是性能更低
(5)http协议对资源的操作
方法 | 说明 |
---|---|
GET | 请求获取URL位置的资源 |
HEAD | 请求获取URL位置资源的响应消息报告,即获得该资源的头部信息 |
POST | 请求向URL位置的资源后附加新的数据 |
PUT | 请求向URL位置存储一个资源,覆盖原URL位置的资源 |
PATCH | 请求局部更新URL位置的资源,覆盖原URL位置的资源 |
DELETE | 请求删除URL位置存储的资源 |
5.Requests库方法
方法 | 说明 |
---|---|
requuests.request() | 构造一个请求,支撑以下各方法的基础方法 |
requests.get() | 获取HTML网页的主要方法,对应于HTTP的GET |
requests.head() | 获取HTML网页头信息的方法,对应于HTTP的HEAD |
requests.post() | 向HTML网页提交POST请求的方法,对应于HTTP的POST |
requests.put() | 向HTML网页提交PUT请求的方法,对应于HTTP的PUT |
requests.patch() | 向HTML网页提交局部修改请求,对应于HTTP的PATCH |
requests.delete() | 向HTML网页提交删除请求,对应于HTTP的DELETE |
6.Requests方法的13个访问控制参数
参数名 | 说明 |
---|---|
params | 字典或字节序列,作为参数增加到url中 |
data | 字典、字节序列或文件对象,作为Request的内容 |
json | JSON格式的数据,作为Request的内容 |
headers | 字典、HTTP定制头 |
cookies | 字典或CookieJar,Request中的cookie |
auth | 元组,支持HTTP认证功能 |
files | 字典类型,传输文件 |
timeout | 设定超时时间,秒为单位 |
proxies | 字典类型,设定访问代理服务器,可以增加登录认证 |
allow_redirects | True/False,默认为True,重定向开关 |
stream | True/False,默认为True,获取内容立即下载开关 |
verify | True/False,默认为True,认证SSL证书开关 |
cert | 本地SSL证书路径 |
二、网络爬虫的“盗亦有道”
1.网络爬虫引发的问题
(1)骚扰问题:受限于编程水平和目的,网络爬虫将会为web服务器带来巨大的资源开销。
(2)法律风险:服务器上的数据有产权归属,网络爬虫获取数据后牟利将会带来法律风险
(3)隐私泄露:网络爬虫可能具备突破简单访问控制的能力,获得被保护数据从而泄露个人隐私
2.网络爬虫的尺寸
(1)小规模,数据量小,爬取速度不敏感,Requests库 ;爬取网页,玩转网页
(2)中规模,数据规模较大,爬取速度敏感,Scrapy库;爬取网站,爬取系列网站
(3)大规模,搜索引擎,爬取速度关键,定制开发;爬取全网
根据使用场景,爬虫可以也分为两类:
(1)通用爬虫:是搜索引擎抓取系统的重要组成部分
(2)聚焦爬虫:面向特点网页的一种网络爬虫程序
3.网络爬虫的限制
(1)来源审查:判断User-Agent进行限制
检查来访HTTP协议头的User-Agent域,只响应浏览器或友好爬虫的访问。
(2)发布公告:Robots
4.Robots协议
Robots Exclusion Standard 网络爬虫排除标准
作用:告知所有爬虫网站的爬取策略,要求爬虫遵守。
形式:在网站的根目录下的robots.txt文件
使用:自动或人工识别robots.txt,再进行内容爬取,协议可以不遵守,但可能存在法律风险
类人类行为可不遵守,如写小程序一天访问几次服务器
三、Requests库网络爬虫实战(五个实例)
这五个实例我在博客中有写过完整的解析,感兴趣的小伙伴可以点过去看一下,传送门送给大家。
实例1:淘宝商品页面的爬取
https://blog.csdn.net/weixin_44578172/article/details/109301305
实例2:亚马逊商品页面的爬取
https://blog.csdn.net/weixin_44578172/article/details/109323613
实例3: 百度360搜索关键词提交
https://blog.csdn.net/weixin_44578172/article/details/109349554
实例4: 网络图片的爬取和存储
https://blog.csdn.net/weixin_44578172/article/details/109377336
实例5: IP地址归属地的自动查询
https://blog.csdn.net/weixin_44578172/article/details/109376326
本篇完,如有错误欢迎指出~
引用源自
中国大学MOOC Python网络爬虫与信息提:https://www.icourse163.org/course/BIT-1001870001
互联网博客:https://www.datealive.top/2020/05/python-pc/
CSDN博客:https://blog.csdn.net/songhui1024/article/details/84575575
写在最后
本篇属于整理总结类型文章,整理不易,如果对你有帮助的话,欢迎收藏喔~
ps:一键三连更好啦~
爬虫笔记(一)——Requests库相关推荐
- Python 网络爬虫笔记2 -- Requests库实战
Python 网络爬虫笔记2 – Requests库实战 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:P ...
- Python 网络爬虫笔记1 -- Requests库
Python 网络爬虫笔记1 – Requests库 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Pyt ...
- 爬虫笔记:Requests库详解
什么是Requests 之前讲解了爬虫笔记:Urllib库详解发现确实有不方便的地方,比如加一个代理,cookie,发送post请求比较繁琐. Request库能用几句话实现这些. Requests ...
- Python学习笔记:requests库
Python学习笔记:requests库 利用requests这个功能强大的网络请求库,可以像浏览器一样发送各种HTTP请求来获取网站的数据. 一.运行环境 1.系统版本:Windows 10 2.P ...
- 爬虫系统基础框架 何时使用爬虫框架? requests库 + bs4来实现简单爬虫
转载请注明出处https://www.cnblogs.com/alexlee666/p/10180519.html,谢谢! 文中图片来自于我的简书博客. 一. 爬虫用途和本质: 网络爬虫顾名思义即模仿 ...
- python3爬虫实战:requests库+正则表达式爬取头像
python3爬虫实战:requests库+正则表达式爬取头像 网站url:https://www.woyaogexing.com/touxiang/qinglv/new/ 浏览网页:可以发现每个图片 ...
- Python网络爬虫与信息提取—requests库入门
requests的学习笔记 requests库自动爬取HTML页面,自动网络请求提交 此博客为中国大学MOOC北京理工大学<Python网络爬虫与信息提取>的学习笔记 requests库的 ...
- Python爬虫利器一Requests库的用法
之前我们用了 urllib 库,这个作为入门的工具还是不错的,对了解一些爬虫的基本理念,掌握爬虫爬取的流程有所帮助.入门之后,我们就需要学习一些更加高级的内容和工具来方便我们的爬取.那么这一节来简单介 ...
- 从零开始写Python爬虫---1.1 requests库的安装与使用
什么是爬虫? 爬虫本质上是模拟人浏览信息的过程,只不过他通过计算机来达到快速抓取筛选信息的目的.所以我们想要写一个爬虫,最基本的就是要将我们需要抓取信息的网页原原本本的抓取下来.这个时候就要用到req ...
最新文章
- 学以致用三十五-----像素的困惑
- python dataframe groupby_【Python数据分析基础】入坑必备的数据预处理操作
- OpenCV图像分割Grabcut算法
- php数组foreach循环添加键值对_在PHP的foreach循环中插入一个$key作为变量
- java main函数_一行JAVA代码如何运行起来?
- 《菜菜的机器学习sklearn课堂》学习笔记 + 课件
- doc转docx文件会乱吗_利用python将doc文件转换为docx
- 解决bootstrap-table表头filter-control select控件被遮挡显示不全的问题
- 分享一些学习资料-大量PDF电子书
- python监听键盘事件pyhook用法_python 监听键盘事件pyHook
- 3dmax测试软件自动关闭,3dmax软件会自动关闭解决方案
- 双系统卸载Linux,重装Deepin
- ios 纯代码怎么适配ipad_iOS开发中iPhone和iPad的布局适配(工具篇)
- CSAPP lab2 二进制拆弹 binary bombs phase_5
- 如何构建企业内的 TiDB 自运维体系
- ecshop小京东首页分类楼层左侧广告修改方法
- win2012 r2 iis php,Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建wordpress博客教程
- 机器视觉光源概述(选型参考)
- 【OSATE学习笔记】AADL语法介绍(二)软件类构建详细介绍
- 组装台式计算机型号怎么查,怎么查看电脑型号和配置信息
热门文章
- NDK开发之JNI基础
- SpringCloud学习记录(1)-父工程与子模块创建及子模块调用
- 【莹伙丛】手把手教你:Gradle 安装及配置
- 甘肃省甘南藏族自治州谷歌卫星地图下载
- 英特尔眼中的三大科技趋势
- 在DCOM配置中找到Microsoft Office Word 97 - 2003 文档
- 软件单元测试操作步骤(java版)
- python制作神经网络_MicroPython动手做(10)——零基础学MaixPy之神经网络KPU
- 小米妙享偷渡用户升级方法(3.0.2.68)
- 硅上量子点激光器报告最新进展总结(二)