网络爬虫之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)