|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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(三)介绍高级网络模块请求
|
评分
-
查看全部评分
|