requests库
基本用法api
用法 | |
---|---|
获取url | response=requests.get("www.baidu.com") |
获取状态码 | response.states_code |
返回html | response.text |
返回头部信息 | response.headers |
返回请求的url | response.url |
解码 | response.content.decode("utf-8") |
请求方式
get(),post(),put()等
相关代码
import requests
response=requests.get("https://www.baidu.com/")
content=response.text
#print(content)
data={
'first':True,
'pn':1,
'kd':"后端开发"
}
headers={
'Referer':"https://www.lagou.com/jobs/list_%E5%90%8E%E7%AB%AF%E5%BC%80%E5%8F%91?city=%E5%85%A8%E5%9B%BD&cl=false&fromSearch=true&labelWords=&suginput=",
'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"
}
response1=requests.post("https://www.lagou.com/jobs/companyAjax.json?needAddtionalResult=false",data=data,headers=headers)
print(response1.json())
response的对象属性
属性 | 说明 |
---|---|
r.status_code | HTTP请求的返回状态,200表示成功 |
r.text | 页面对应内容 |
r.encodeing | 获取Header中猜测的响应内容编码方式 |
r.apparent_encoding | 从内容中分析出响应内容编码方式(备用编码) |
r.content | HTTP响应内容的二进制形式 |
注意
:response.text和response.content的区别
- response.content:从网络上获取的数据,没有经过任何解码,所以是bytes类型,在硬盘和网络上都是以bytes传递的
- response.text这是进行了解码的字符串,requests会根据自己的猜测判断编码方式,如果猜测错误,就会乱码,这时候就可以使用
response.content.decode("utf-8")
进行手动解码
requests库异常
异常 | 说明 |
---|---|
requests.ConnectionError | 网络连接错误异常,如DNS查询失败、拒绝连接等 |
requests.HTTPError | HTTP错误异常 |
requests.URLRequired | URL缺失异常 |
requests.TooManyRedirects | 超过最大重定向次数,产生重定向异常 |
requests.ConnectTimeout | 连接远程服务器超时异常 |
requests.Timeout | 请求URL超时,产生超时异常 |
Requests使用代理
https://www.httpbin.org/ip 该网站能展示你 当前电脑请求ip
参考资料
- 动态设置User-Agent
- 使用代理IP,这是爬虫/反爬虫的第二大招,通常也是最好用的。
proxy = {
'http': '117.131.99.210:53281'
}
response = requests.get("https://www.httpbin.org/ip", proxies=proxy)
处理cookies
使用seesion回话对象,保存登录对象
import requests
url = "http://www.renren.com/SysHome.do"
data = {
'email': "xxxxxx@qq.com",
'password': 'xxxxx'
}
headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"
}
session = requests.session()
session.post(url=url, data=data, headers=headers)
response = session.get("http://www.renren.com/xxxxx/profile")
with open("renren.html", 'w', encoding='utf8') as fp:
fp.write(response.text)
处理不信任的SSL证书
添加 verify=flase
网友评论