python爬虫学习---Requests库的使用
#-*- coding:utf-8 -*-
#status_code用于查看请求状态码,text用于查看文本,cookies用于查看请求的cookie信息,headers头信息
import requests
response=requests.get('https://www.baidu.com')
print(response.encoding)#这里用于查看网页编码
print(response.status_code)
print(response.text.encode("utf-8"))#不加使用utf-8编码会报编码错误,因为原网页编码为ISO
print(response.cookies)
print(response.headers)
print(response.history)#返回历史记录
#不同的请求方式post,put,delete等等,其中get为最基本的请求
#实现带参数的get请求
#在基础url后加?,不同的参数使用$进行连接,即构造请求带参数的网址
#解析json
import requests
import json
response=requests.get("http://httpbin.org/get")
print(response.json())
print(json.loads(response.text))#比较返回的json结果
print(response.content)#获取二进制数据,用于下载图片等内容
with open("D:/result.txt","wb") as file:#这里文件设置为绝对路径,本来不用,但是vscode终端运行并未新建文件
file.write(response.content)
file.close()#保存二进制数据,文件后缀保存图片时可设置为图片的后缀名
#添加headers,用于反爬虫机制,模拟成浏览器
headers={...}
response=requests(url,headers=headers)
print(response.text)#这里不进行演示,旨在强调requests库可以支持参数传递
#post请求,以form表单形式请求
import requests
data={...}#此处为字典形式
response=requests.post(url,data=data)
print(response.text)#可以传递账号密码等,可用于反爬机制
#状态码判断,状态码status_codes会返回int数值,也有对应的状态信息
#例如200==codes.ok,可调用名字用于判断
import requests
print(200==requests.codes.ok)
#文件上传操作
import requests
files={'file':open('D:/result.txt','wb')}
response=requests.post(url,files=files)
print(response.text)
#会话维持,可以模拟登陆
import requests
session=requests.Session()
session.get(url)
response=session.get(url)#在请求期间保持cookie,保持一个持续访问的会话
#证书验证,当请求一个https网站时,会检查证书是否合法,否则会报错
import requests
from requests.packages import urllib3
urllib3.disable_warnings()
response=requests.get(url,verify=False)#忽略证书
#response=request.get(url,cert=('证书路径'))这是设置一个证书
#设置代理,用于反爬机制
import requests
proxies={"http":"http://user:password@ip"}
response=requests.get(url,proxies=proxies)
#超时设置
import requests
from requests.exceptions import ReadTimeout#用于异常处理
response=requests.get(url,timeout=1)#设置1s内响应,否则抛出异常
#可以用try-except进行异常处理
#异常处理和其他的类使用可以参考官方文档,异常可以保证程序不间断运行
#认证设置,用于输入账号密码
import requests
from requests.auth import HTTPBasicAuth
response=requests.get(url,auth=HTTPBasicAuth('账号','密码'))
这其中有不合适或者不正确的地方欢迎指正,我的QQ号码:2867221444(乔金明),谢谢,也可以相互交流下,备注信息随意,只要能看得出是开发者或者学习者即可。