requests 库只是一个工具,是工具就有它的使用方式,下面是使用 requests 库的 GET 方法请求网站URL的方法
import requests response = requests.get("https://www.baidu.com/?tn=monline_3_dg") print(response.text)
requests 库的通用代码函数框架
# 爬取网页的通用代码框架(加入异常处理方法) import requests # 定义一个爬虫通用框架函数 def getHTMLText(url): try: # 通过get方法请求url并设定响应时间 r = requests.get(url,timeout=30) # 如果状态码不是200,引发 HTTPError 异常 r.raise_for_status() # 解析返回数据的编码方式 r.encoding = r.apparent_encoding # 输出返回网页的内容 return r.text except: return "产生异常"
更改请求头 headers,
-
先构造一个键值对:kv = {"user-agent":"Mozilla/5.0"}¶
-
修改爬虫的头部信息: r = requests.get(url,headers = kv)
-
Mozilla/5.0:是一个标准的浏览器标识
# 爬取网页的通用代码框架(加入异常处理方法) import requests # 定义一个爬虫通用框架函数 def getHTMLText(url): try:
kv = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36"} # 通过get方法请求url并设定响应时间 r = requests.get(url,headers = kv,timeout=30) # 如果状态码不是200,引发 HTTPError 异常 r.raise_for_status() # 解析返回数据的编码方式 r.encoding = r.apparent_encoding # 输出返回网页的内容 return r.text except: return "产生异常"
更改请求头爬取拉勾网实例
import requests url = "https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=" try: kv = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36"} r = requests.get(url,timeout=30,headers=kv) r.raise_for_status r.encoding = r.apparent_encoding print(r.text) except: print("请求异常")
使用 post 方法发送请求
# 发送 post 请求 import requests url = 'https://www.lagou.com/zhaopin/Python/?labelWords=label' data = { "first":"true", "pn":1, "kd":"python" } kv = {'Referer':'https://www.lagou.com/zhaopin/Python/?labelWords=label', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36'} r = requests.post(url,headers=kv,data=data) print(r.text) print(r.json())
使用代理 IP¶
- 只需在(get 或 post )传递 proxies 参数就可以了实例代码如下:
import requests url = 'http://httpbin.org/get' kv = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36'} pr = { "http":"101.64.32.100:808" } r = requests.get(url,headers=kv,proxies=pr) # 使用打开文件的方式 with open('xx.html','w',encoding='utf-8') as fp: fp.write(r.text)
requests处理cookie信息¶
import requests r = requests.get("https://www.baidu.com/") print(r.cookies) # 以字典的方式展示cookies信息 print(r.cookies.get_dict())
session¶
- 如果使用 requests ,要共享 cookie 的目的,那么可以 requests 库给我们提共的 session 对象,这里的 session 只是一个绘画对象而已
登入人人网实例
import requests url = "http://www.renren.com/PLogin.do" data = {"email":"970138074@qq.com","password":"pythonspider"} kv = { "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36" } # 登入 session = requests.Session() session.post(url,data=data,headers=kv) # 访问个人中心 resp = session.get("http://www.renren.com/880151247/profile") with open('renren.html','w',encoding='utf-8') as fp: fp.write(resp.text)
要获取网站上的视频或图片就将获取的内容返回为二进制格式,实例如下:
import requests response = requests.get('https://github.com/favicon.ico') print(type(response.text),type(response.content)) print(response.text) # content 是获取内容的二进制内容 print(response.content)
有时候我们获取的内容格式为 json 格式可以这样解析
import requests response = requests.get("http://httpbin.org/get") print(type(response.text)) print(response.json()) print(type(response.json()))
以下是 requests 库的各种请求的返回内容
import requests response = requests.get('https://www.baidu.com/?tn=monline_3_dg') # 打印response的类型 print(type(response)) # 查看返回的状态码 print(response.status_code) # 打印返回的值的属性 print(type(response.text)) # 打印返回的值 print(response.text) # 查看返回的cookies值 print(response.cookies)
import requests requests.post('https://www.baidu.com/?tn=monline_3_dg') requests.put('https://www.baidu.com/?tn=monline_3_dg') requests.delete('https://www.baidu.com/?tn=monline_3_dg') requests.head('https://www.baidu.com/?tn=monline_3_dg') requests.options('https://www.baidu.com/?tn=monline_3_dg')