Requests库基本使用

一.GET

1.requests 这个库提供了一个 get 方法,调用这个方法,并传入对应的 URL 就能得到网页的源代码

2.URL后面是可以跟上一些参数的,如果想添加两个参数,比如其中name是germey,age是25,URL就可以写成如下内容:http://httpbin.org/get?name=germey&age=25

3.把URL参数通过字典的形式传给get方法的params参数,通过返回信息我们可以判断,请求的链接自动被构造成了:http://httpbin.org/get?age=22&name=ermey

 1 # -*- coding: utf-8 -*-
 2 """
 3 Created on Fri Apr 17 22:34:59 2020
 4 
 5 @author: ZKYAAA
 6 """
 7 
 8 
 9 import requests
10 
11 print('-----------------------实列1-----------------')
12 #GET发起请求
13 r1=requests.get("https://home.cnblogs.com/u/ZKYAAA/")
14 print(r1.text)
15 
16 print('-----------------------实列2-----------------')
17 #返回Headers,url,ip等
18 r2=requests.get("http://httpbin.org/get")
19 print(r2.text)
20 
21 print('-----------------------实列3-----------------')
22 #URL请求后面可以跟一些参数,构造请求如下
23 r3=requests.get("http://httpbin.org/get?name=germey&age=25")
24 print(r3.text)
25 
26 print('-----------------------实列4-----------------')
27 #params参数的使用,把URL通过字典的形式传给get方法的params参数
28 #通过返回信息可以知道请求的链接被直接构造成URL
29 data={     
30       'name':'germey',
31       'age':'25'
32 }
33 r4=requests.get("http://httpbin.org/get",params=data)
34 print(r4.text)

二.JSON

1.网页的返回类型实际上是 str 类型,但是它很特殊,是 JSON 格式的。所以,如果想直接解析返回结果,得到一个 JSON 格式的数据的话,可以直接调用 json 方法。

2.调用 json 方法,就可以将返回结果是 JSON 格式的字符串转化为字典

3.如果返回结果不是 JSON 格式,便会出现解析错误,抛出 json.decoder.JSONDecodeError 异常。

 1 # -*- coding: utf-8 -*-
 2 """
 3 Created on Fri Apr 17 23:33:17 2020
 4 
 5 @author: ZKYAAA
 6 """
 7 
 8 
 9 import requests
10 import re
11 
12 print('-----------------------实列1-----------------')
13 #JSON直接解析返回结果,得到一个JSON格式的数据,直接调用json方法
14 #下面博客网站返回结果不是 JSON 格式,便会出现解析错误,抛出 json.decoder.JSONDecodeError 异常。
15 r=requests.get("https://home.cnblogs.com/u/ZKYAAA/")
16 print(type(r.text))
17 print(r.json())
18 print(type(r.json()))
19 
20 print('-----------------------实列2-----------------')
21 #正则表达式
22 r=requests.get("https://static1.scrape.cuiqingcai.com/")
23 pattern=re.compile('<h2.*?>(.*?)</h2>',re.S)
24 titles=re.findall(pattern,r.text)
25 print(titles)

三.抓取二进制数据

1.打印 Response 对象的两个属性,一个是 text,另一个是 content。运行结果前两行是 r.text 的结果,最后一行是 r.content 的结果。前者出现了乱码,后者结果前带有一个 b,这代表是 bytes 类型的数据.

2.将提取到的信息保存下来,用 open 方法,它的第一个参数是文件名称,第二个参数代表以二进制的形式打开,可以向文件里写入二进制数据。

 1 # -*- coding: utf-8 -*-
 2 """
 3 Created on Sat Apr 18 00:07:43 2020
 4 
 5 @author: ZKYAAA
 6 """
 7 
 8 
 9 import requests
10 
11 print('-----------------------实列1-----------------')
12 #得到乱码二进制文件
13 r=requests.get('https://github.com/favicon.ico')
14 print(r.text)
15 print(r.content)
16 
17 print('-----------------------实列2-----------------')
18 #用 open 方法,得到图片
19 r=requests.get('https://github.com/favicon.ico')
20 with open('favicon.ico','wb') as f:
21     f.write(r.content)

四.添加headers

猜你喜欢

转载自www.cnblogs.com/ZKYAAA/p/12723560.html
今日推荐