网络爬虫之Requests库入门

举报
周棋洛 发表于 2022/05/25 23:42:47 2022/05/25
【摘要】 文章目录 Requests库的安装Requests库的get()方法爬取网页的通用代码框架HTTP协议及Requests库方法 中国大学mooc 学习目标:掌握定向网络数据爬取...


中国大学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个控制访问的参数,均为可选项

  1. params : 字典或字节序列,作为参数增加到url中
  2. data : 字典、字节序列或文件对象,作为Request的内容
  3. json : JSON格式的数据,作为Request的内容
  4. headers : 字典,HTTP定制头
  5. cookies : 字典或CookieJar,Request中的cookie
  6. auth : 元组,支持HTTP认证功能
  7. files : 字典类型,传输文件
  8. timeout : 设定超时时间,秒为单位
  9. proxies : 字典类型,设定访问代理服务器,可以增加登录认证
  10. allow_redirects : True/False,默认为True,重定向开关
  11. stream : True/False,默认为True,获取内容立即下载开关
  12. verify : True/False,默认为True,认证SSL证书开关
  13. cert : 本地SSL证书路径
    在这里插入图片描述
    组合:记忆
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

上面的多练习,熟练操作。
在这里插入图片描述
少年就是少年, 他们看春风不喜, 看夏蝉不烦,看秋风不悲, 看冬雪不叹, 看满身富贵懒察觉, 看不公不允敢面对, 只因他们是少年。


文章来源: blog.csdn.net,作者:周棋洛ყ ᥱ ᥉,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/m0_53321320/article/details/118406557

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。