马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 wcq15759797758 于 2021-6-24 20:14 编辑
一. requests的使用 import requests # 导入网络请求模块requests
# 发送GET网络请求 (带params参数 发请求) 如不带参数就把 params=data 删除
data = {'wd': '美女'} # 百度搜索带有的参数
response = requests.get('https://www.baidu.com/s?',params=data) #GET 与POST的请求参数分别是params和data 不要参数填写错误
print('响应状态码为:',response.status_code) # 打印状态码
print('请求的网络地址为:',response.url) # 打印请求url
print('头部信息为:',response.headers) # 打印头部信息
print('cookie信息为:',response.cookies) # 打印cookie信息
# 发送网络请求(进行编码) 进行编程中文才不会乱码
response.encoding='utf-8' # 对响应结果进行utf-8编码
print(response.text) # 以文本形式打印网页源码
#发送百度图片链接 打印二进制数据 并生成图片
response_img = requests.get('https://www.baidu.com/img/flexible/logo/pc/result.png')
#print(response_img.content) # 打印二进制数据
with open('百度logo.png','wb')as f: # 通过open函数将二进制数据写入本地文件
f.write(response_img.content) # 写入
二. requests的使用 (发送POST)import requests # 导入网络请求模块requests
import json # 导入json模块
# 字典类型的表单参数 注意:POST请求中data参数的数据的格式也可以是列表、元组或是JSON 实例如下
#data字典形式
data = {'1': '能力是有限的,而努力是无限的。','2':'星光不问赶路人,时光不负有心人。',}
#data元组形式
#data = (('1','能力是有限的,而努力是无限的。'),('2','星光不问赶路人,时光不负有心人'))
#data列表形式
#data = [('1','能力是有限的,而努力是无限的。'),('2','星光不问赶路人,时光不负有心人')]
#请求头 UA设置
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3870.400 QQBrowser/10.8.4405.400'}
# 发送网络请求
response = requests.post('http://httpbin.org/post',data=data,headers=headers)
response_dict = json.loads(response.text) # 将响应数据转换为字典类型
print(response_dict) # 打印转换后的响应数据
三.使用cookies 发起网络请求import requests # 导入网络请求模块
from lxml import etree # 导入lxml模块
#使用cookies 发起网络请求
cookies = 'll="118205"; bid=VXEqP8os6CI; __utmz=30149280.1624499543.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); dbcl2="240485353:xkFCkBPvm00"; __gads=ID=939927e29325b086:T=1624499934:S=ALNI_MYGkDFzwid5_oXRDxzrT8Dqp65Hgg; push_noty_num=0; push_doumail_num=0; __utmv=30149280.24048; ck=Wvqu; __utmc=30149280; _pk_ses.100001.8cb4=*; ap_v=0,6.0; __utma=30149280.1504183362.1624499543.1624499543.1624513318.2; __utmt=1; _pk_id.100001.8cb4=3254b4dad66c2826.1624499542.2.1624513320.1624500856.; __utmb=30149280.4.10.1624513318'
headers = {'Host': 'www.douban.com',
'Referer': 'https://www.baidu.com/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/72.0.3626.121 Safari/537.36'}
# 创建RequestsCookieJar对象,用于设置cookies信息
cookies_jar = requests.cookies.RequestsCookieJar()
for cookie in cookies.split(';'):
key, value = cookie.split('=', 1)
cookies_jar.set(key, value) # 将cookies保存RequestsCookieJar当中
# 发送网络请求
response = requests.get('https://www.douban.com/',headers=headers, cookies=cookies_jar)
if response.status_code == 200: # 请求成功时
html = etree.HTML(response.text) # 解析html代码
# 获取用户名 #这里用了xpath
name = html.xpath('//*[@id="db-global-nav"]/div/div[1]/ul/li[2]/a/span[1]/text()')
print(name[0]) # 打印用户名
四.使用Session回话请求# 使用Session回话请求
import requests # 导入requests模块
s = requests.Session() # 创建会话对象
data={'LoginForm[username]': 'asd112233', 'LoginForm[password]': 'asd445566'} # 创建用户名、密码的表单数据
# 发送登录请求
response =s.post('https://www.xbiquge.la/login.php?jumpurl=https://www.xbiquge.la/',data=data)
response2=s.get('https://www.xbiquge.la/modules/article/bookcase.php') # 发送登录后页面请求 (我的书架)
print('登录信息:',response.text) # 打印登录信息
print('登录后页面信息如下:\n',response2.text) # 打印登录后的页面信息
五.访问网页是弹出的登录验证import requests # 导入requests模块
from requests.auth import HTTPBasicAuth # 导入HTTPBasicAuth类
#访问网页的时候 跳出的登录界面
# 定义请求地址
url = 'http://sck.rjkflm.com:666/spider/auth/'
ah = HTTPBasicAuth('admin','admin') # 创建HTTPBasicAuth对象,参数为用户名与密码
response = requests.get(url=url,auth=ah) # 发送网络请求
if response.status_code==200: # 如果请求成功
print(response.text) # 打印验证后的HTML代码
六.网络超时与异常import requests # 导入网络请求模块
# 导入requests.exceptions模块中的三种异常类
from requests.exceptions import ReadTimeout,HTTPError,RequestException
# 循环发送请求50次
for a in range(0, 50):
try: # 捕获异常
# 设置超时为0.1秒
response = requests.get('https://www.baidu.com/', timeout=0.1)
print(response.status_code) # 打印状态码
except ReadTimeout: # 超时异常
print('timeout')
except HTTPError: # HTTP异常
print('httperror')
except RequestException: # 请求异常
print('reqerror')
七.使用requests上传文件import requests # 导入网络请求模块
bd = open('百度logo.png','rb') # 读取指定文件
file = {'file':bd} # 定义需要上传的图片文件
#设置UA
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3870.400 QQBrowser/10.8.4405.400'}
# 发送上传文件的网络请求
response = requests.post('http://httpbin.org/post',files = file,headers=headers)
print(response.text) #能看到传上去的图片转换为了Base64的编码形式 # 打印响应结果
后续附上requests(二)介绍 代理IP UA浏览器伪装 requests(三)介绍高级网络模块请求
|