Python爬虫入门_requests
1.requests 模块是干什么的?
>requests是使用Apache2 licensed 许可证的HTTP库。用python编写。
>比urllib2模块更简洁。
>Request支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码。
>在python内置模块的基础上进行了高度的封装,从而使得python进行网络请求时,变得人性化,使用Requests可以轻而易举的完成浏览器可有的任何操作。
>现代,国际化,友好。
requests会自动实现持久连接keep-alive
2.requests 安装
pip3 install requests
or
pip install requests
3.使用案例
3.1 基础request 的get 请求
import requests
result = requests.get("https://www.baidu.com")
print(result.text)
3.2 基础request 的get 请求,带参数,效果 https://suggest.taobao.com/sug?code=utf-8&q=%E5%8D%AB%E8%A1%A3
import requests
result = requests.get("https://suggest.taobao.com/sug",params={'code':'utf-8','q':'卫衣'})
print(result)
3.3 request 的 post 复杂请求
import requests
import json
url = 'https://api.novaq.online/oss/v1/oss/batchGenerateUrlForTime'
body = {"second":1000,"bucketName":"novaq-oss","objectNameList":["userHeader/202005062696/360截图20191226102533022.jpg","userHeader/202003302612/L99.jpg","userHeader/202008055466/222.jpg","userHeader/202103081693/360截图20210226110109977.jpg"]}
headers = {'content-type': "application/json"}
cookie = {'key':'value'}
result = requests.post(url,data=json.dumps(body),headers=headers,cookies=cookie)
# 扩展-也可以直接将data字段换成json字段,2.4.3版本之后支持
result = requests.post(url, json = body, headers = headers)
print(result)
3.4 设置 秒数 超时,仅对于连接有效
import requests
# 单位为 秒
r = requests.get('https://www.baidu.com',timeout=0.001)
print(r.text)
3.5 设置请求代理
代理ip 来自 代理ip网站, 请求 http://icanhazip.com 网站会返回当前本地ip地址
import requests
# 如果代理需要用户名和密码,则需要这样:
# proxies = {
# "http": "http://user:pass@10.10.1.10:3128/",
# }
proxies = {
"http": "http://47.91.153.45:80"
# "https": "115.202.197.246",
}
result = requests.get('http://icanhazip.com',proxies=proxies)
print(result.text)
3.6 reuqests 常用返回处理
import requestsresult = requests.get("https://www.baidu.com")#以encoding解析返回内容。字符串方式的响应体,会自动根据响应头部的字符编码进行解码。print(result.text) #获取当前的编码print(result.encoding ) #设置编码result.encoding = 'utf-8' #以字节形式(二进制)返回。字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩。print(result.content)#以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回Noneprint(result.headers )#响应状态码 print(result.status_code)#返回原始响应体,也就是 urllib 的 response 对象,使用 r.raw.read()print(result.raw.read()) # 查看r.ok的布尔值便可以知道是否登陆成功print(result.ok ) #Requests中内置的JSON解码器,以json形式返回,前提返回的内容确保是json格式的,不然解析出错会抛异常print(result.json()) #失败请求(非200响应)抛出异常print(result.raise_for_status())
坚持爬虫学习,end
没有谁的幸运是凭空而来,只有当你足够努力,你才会足够幸运。这世界不会辜负每一份努力和坚持。时光不会怠慢执着而勇敢的每一个人!
评论区