文章目录

  • 写在前面
  • 一、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库相关推荐

  1. Python 网络爬虫笔记2 -- Requests库实战

    Python 网络爬虫笔记2 – Requests库实战 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:P ...

  2. Python 网络爬虫笔记1 -- Requests库

    Python 网络爬虫笔记1 – Requests库 Python 网络爬虫系列笔记是笔者在学习嵩天老师的<Python网络爬虫与信息提取>课程及笔者实践网络爬虫的笔记. 课程链接:Pyt ...

  3. 爬虫笔记:Requests库详解

    什么是Requests 之前讲解了爬虫笔记:Urllib库详解发现确实有不方便的地方,比如加一个代理,cookie,发送post请求比较繁琐. Request库能用几句话实现这些. Requests ...

  4. Python学习笔记:requests库

    Python学习笔记:requests库 利用requests这个功能强大的网络请求库,可以像浏览器一样发送各种HTTP请求来获取网站的数据. 一.运行环境 1.系统版本:Windows 10 2.P ...

  5. 爬虫系统基础框架 何时使用爬虫框架? requests库 + bs4来实现简单爬虫

    转载请注明出处https://www.cnblogs.com/alexlee666/p/10180519.html,谢谢! 文中图片来自于我的简书博客. 一. 爬虫用途和本质: 网络爬虫顾名思义即模仿 ...

  6. python3爬虫实战:requests库+正则表达式爬取头像

    python3爬虫实战:requests库+正则表达式爬取头像 网站url:https://www.woyaogexing.com/touxiang/qinglv/new/ 浏览网页:可以发现每个图片 ...

  7. Python网络爬虫与信息提取—requests库入门

    requests的学习笔记 requests库自动爬取HTML页面,自动网络请求提交 此博客为中国大学MOOC北京理工大学<Python网络爬虫与信息提取>的学习笔记 requests库的 ...

  8. Python爬虫利器一Requests库的用法

    之前我们用了 urllib 库,这个作为入门的工具还是不错的,对了解一些爬虫的基本理念,掌握爬虫爬取的流程有所帮助.入门之后,我们就需要学习一些更加高级的内容和工具来方便我们的爬取.那么这一节来简单介 ...

  9. 从零开始写Python爬虫---1.1 requests库的安装与使用

    什么是爬虫? 爬虫本质上是模拟人浏览信息的过程,只不过他通过计算机来达到快速抓取筛选信息的目的.所以我们想要写一个爬虫,最基本的就是要将我们需要抓取信息的网页原原本本的抓取下来.这个时候就要用到req ...

最新文章

  1. 学以致用三十五-----像素的困惑
  2. python dataframe groupby_【Python数据分析基础】入坑必备的数据预处理操作
  3. OpenCV图像分割Grabcut算法
  4. php数组foreach循环添加键值对_在PHP的foreach循环中插入一个$key作为变量
  5. java main函数_一行JAVA代码如何运行起来?
  6. 《菜菜的机器学习sklearn课堂》学习笔记 + 课件
  7. doc转docx文件会乱吗_利用python将doc文件转换为docx
  8. 解决bootstrap-table表头filter-control select控件被遮挡显示不全的问题
  9. 分享一些学习资料-大量PDF电子书
  10. python监听键盘事件pyhook用法_python 监听键盘事件pyHook
  11. 3dmax测试软件自动关闭,3dmax软件会自动关闭解决方案
  12. 双系统卸载Linux,重装Deepin
  13. ios 纯代码怎么适配ipad_iOS开发中iPhone和iPad的布局适配(工具篇)
  14. CSAPP lab2 二进制拆弹 binary bombs phase_5
  15. 如何构建企业内的 TiDB 自运维体系
  16. ecshop小京东首页分类楼层左侧广告修改方法
  17. win2012 r2 iis php,Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建wordpress博客教程
  18. 机器视觉光源概述(选型参考)
  19. 【OSATE学习笔记】AADL语法介绍(二)软件类构建详细介绍
  20. 组装台式计算机型号怎么查,怎么查看电脑型号和配置信息

热门文章

  1. NDK开发之JNI基础
  2. SpringCloud学习记录(1)-父工程与子模块创建及子模块调用
  3. 【莹伙丛】手把手教你:Gradle 安装及配置
  4. 甘肃省甘南藏族自治州谷歌卫星地图下载
  5. 英特尔眼中的三大科技趋势
  6. 在DCOM配置中找到Microsoft Office Word 97 - 2003 文档
  7. 软件单元测试操作步骤(java版)
  8. python制作神经网络_MicroPython动手做(10)——零基础学MaixPy之神经网络KPU
  9. 小米妙享偷渡用户升级方法(3.0.2.68)
  10. 硅上量子点激光器报告最新进展总结(二)