网络爬虫之Requests库入门
中国大学mooc
学习目标:掌握定向网络数据爬取和网页解析的基本能力
借助丰富的库通过 Website API
自动爬取HTML页面
自动网络请求提交
Requests(请求)
Requests库的安装
windows下非常简单,只需要打开cmd,执行安装命令执行 pip install requests等待即可
好,OK
下面通过访问百度主页来test一下我们有没有安装成功
vscode用起来有点不大适应,哈哈
import requests #导入requests库
r = requests.get("http://www.baidu.com") #获取百度主页
a=r.status_code #获取状态码,200说明没问题,不是200就是哪有问题
print(a) #打印状态码
r.encoding = 'utf-8' #更改为utf-8编码
print(r.text) #打印获取的内容
- 1
- 2
- 3
- 4
- 5
- 6
可以看到状态码为200 , 并且成功了获取到了百度的主页
Requests库的get()方法
requests库提供了7种方法
Requests库的两个重要对象:Request(请求) 和 Response(接收)
Response对象包含服务器返回的所有信息,也包含请求的Request信息
Response对象的属性
理解requests编码:
爬取网页的通用代码框架
r.raise_for_status()在方法内部判断r.status_code是否等于200,不需要
增加额外的if语句,该语句便于利用try‐except进行异常处理
import requests #导入requests库
def getHTMLtext(url):
try:
r = requests.get(url,timeout=20)
r.raise_for_status() #通用框架,获取状态码,如果是200正常,如果不是就会抛出一个异常,我们的try except 用来捕获异常。
r.encoding = r.apparent_encoding #用根据内容猜测编码来替代根据头获取编码
return r.text #打印获取
except:
return "有异常产生"
#通过函数调用即可
if __name__ == "__main__":
url="ttp://www.baidu.com"
print(getHTMLtext(url))
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
可以有效的处理爬取过程中可能出现的错误网络不稳定等等
稳定,可靠
url正常
我们给一个错误的url,让它出错
这是就会给我们提示异常,我们自己找解决就OK。
HTTP协议及Requests库方法
HTTP,Hypertext Transfer Protocol,超文本传输协议,是一个基于“请求与响应”模式的、无状态的应用层协议
HTTP协议采用URL作为定位网络资源的标识,URL格式如下:
http://host[:port][path]
host: 合法的Internet主机域名或者是IP地址
port: 端口号
path: 请求资源的路径
HTTP URL的理解:
URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源
HTTP协议对资源的操作
通过URL和命令管理资源,操作独立无状态,网络通道及服务器成为了黑盒子
HTTP协议和Requests库是一致的
Requests库的head()方法
import requests
r = requests.head("https://www.kuangstudy.com/course?cid=1")
r.encoding=r.apparent_encoding
print(r.headers)
- 1
- 2
- 3
- 4
Requests库的post方法
post字典
import requests
payload={'a':'A','b':'B'}
r = requests.post("https://www.kuangstudy.com/course?cid=1",data=payload)
a=r.status_code
print(a)
print(r.text)
- 1
- 2
- 3
- 4
- 5
- 6
哈哈,没有成功,不过没有关系,这是小狂神的网站,有这方面的检测。不过,可以模拟浏览器。
换个url
import requests
payload={'a':'A','b':'B'}
r = requests.post("http://httpbin.org/post",data=payload)
a=r.status_code
print(a)
print(r.text)
- 1
- 2
- 3
- 4
- 5
- 6
post字符串
import requests
r = requests.post("http://httpbin.org/post",data="asc")
a=r.status_code
print(a)
print(r.text)
- 1
- 2
- 3
- 4
- 5
自动编码为data
requests.request(method, url, **kwargs)
kwargs: 12个控制访问的参数,均为可选项
- 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证书路径
组合:记忆
上面的多练习,熟练操作。
少年就是少年, 他们看春风不喜, 看夏蝉不烦,看秋风不悲, 看冬雪不叹, 看满身富贵懒察觉, 看不公不允敢面对, 只因他们是少年。
文章来源: blog.csdn.net,作者:周棋洛ყ ᥱ ᥉,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/m0_53321320/article/details/118406557
- 点赞
- 收藏
- 关注作者
评论(0)