爬虫笔记(一)——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控制台

爬虫笔记(一)——Requests库_第1张图片

输入如下代码即可安装

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对象

爬虫笔记(一)——Requests库_第2张图片

(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:一键三连更好啦~

你可能感兴趣的:(Python学习之路,python,爬虫,http,request)