python爬虫之requests的高级使用
1、requests能上传文件
# 导入requests模块
import requests
# 定义一个dict
files = {'file': open('D:/360Downloads/1.txt', 'rb')}
# post请求
response = requests.post("http://httpbin.org/post",files=files)
# 以字符串形式返回
print(response.text)
结果:
{
"args": {},
"data": "",
"files": {
"file": "data:application/octet-stream;base64,ZGVtbzAxxOO6ww=="
},
"form": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "151",
"Content-Type": "multipart/form-data; boundary=9502063320dadabde8e0197a299a933c",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.23.0",
"X-Amzn-Trace-Id": "Root=1-5e71d1bc-221f2f9c5a23aa1c11d21b3c"
},
"json": null,
"origin": "111.77.5.100",
"url": "http://httpbin.org/post"
}
Process finished with exit code 0
2、requests能获取cookies(网页识别码)
# 导入requests模块
import requests
# get请求
response=requests.get("https://fanyi.baidu.com")
# 获取cookies
print(response.cookies)
# 获取cookies信息
print(tuple(response.cookies))
# 调用items,遍历一个dict的key和value
for key,value in response.cookies.items():
print(key+"="+value)
结果:
<RequestsCookieJar[<Cookie BAIDUID=72BE4EB04DB39349C036BA1BDF4D2895:FG=1 for .baidu.com/>]>
(Cookie(version=0, name='BAIDUID', value='72BE4EB04DB39349C036BA1BDF4D2895:FG=1', port=None, port_specified=False, domain='.baidu.com', domain_specified=True, domain_initial_dot=True, path='/', path_specified=True, secure=False, expires=1616058282, discard=False, comment=None, comment_url=None, rest={}, rfc2109=True),)
BAIDUID=405DCB00DFE182D6581CBFAA3297C6BA:FG=1
Process finished with exit code 0
知道cookies的name,快速访问cookies的value:
# 导入requests模块
import requests
# get请求
response= requests.get('http://fanyi.baidu.com')
# 访问cookies的值
print(response.cookies['BAIDUID'])
# 以元组形式返回cookies
print(tuple(response.cookies))
结果:
B5A1A6A7B622F295DF802DA4D10F92CB:FG=1
(Cookie(version=0, name='BAIDUID', value='B5A1A6A7B622F295DF802DA4D10F92CB:FG=1', port=None, port_specified=False, domain='.baidu.com', domain_specified=True, domain_initial_dot=True, path='/', path_specified=True, secure=False, expires=1616068429, discard=False, comment=None, comment_url=None, rest={}, rfc2109=True),)
Process finished with exit code 0
3、会话维持
cookies一个作用就是模拟登入,做会话维持,如何把自己的cookies发送到服务器上:
# 导入requests模块
import requests
# 导入json模块
import json
# 定义cookies,dict形式
cookies={"number":"1234567"}
# get请求,加上
response=requests.get("http://httpbin.org/cookies",cookies=cookies)
# 以字符串形式返回
print(response.text)
结果:
{
"cookies": {
"number": "1234567"
}
}
Process finished with exit code 0
或者用requests.session也可以把自己的cookies发到服务器上:
# 导入requests模块
import requests
# 建立session对象
session = requests.session()
# get请求
response = session.get('http://httpbin.org/cookies/set/number/1234567')
# 以字符串形式返回
print(response.text)
结果:
{
"cookies": {
"number": "1234567"
}
}
Process finished with exit code 0
4、证书验证
# 导入requests模块
import requests
# get请求
response = requests.get('https://www.12306.cn')
# 在请求https时,request会进行证书的验证,如果验证失败则会抛出异常
print(response.status_code)
如果无证书验证,会抛出异常。有证书验证,返回200。
怎么关闭证书验证:
# 导入requests模块
import requests
# get请求,关闭证书验证
response = requests.get('https://www.12306.cn',verify=False)
# 在请求https时,request会进行证书的验证,如果验证失败则会抛出异常
print(response.status_code)
结果:显示有warning

关闭证书验证后,怎么消除waring:
# 导入urllib3函数
from requests.packages import urllib3
# 导入requests模块
import requests
# 消除警告
urllib3.disable_warnings()
# get请求
response = requests.get('https://www.12306.cn', verify=False)
# 返回状态代码
print(response.status_code)
结果:200
python爬虫之requests的高级使用的更多相关文章
- Python爬虫Urllib库的高级用法
Python爬虫Urllib库的高级用法 设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Head ...
- 孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块
孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块 (完整学习过程屏幕记录视频地址在文末) 从今天起开始正式学习Python的爬虫. 今天已经初步了解了两个主要的模块: ...
- Python爬虫练习(requests模块)
Python爬虫练习(requests模块) 关注公众号"轻松学编程"了解更多. 一.使用正则表达式解析页面和提取数据 1.爬取动态数据(js格式) 爬取http://fund.e ...
- python爬虫之requests库
在python爬虫中,要想获取url的原网页,就要用到众所周知的强大好用的requests库,在2018年python文档年度总结中,requests库使用率排行第一,接下来就开始简单的使用reque ...
- Python爬虫之requests
爬虫之requests 库的基本用法 基本请求: requests库提供了http所有的基本请求方式.例如 r = requests.post("http://httpbin.org/pos ...
- Python 爬虫二 requests模块
requests模块 Requests模块 get方法请求 整体演示一下: import requests response = requests.get("https://www.baid ...
- python爬虫之requests的基本使用
简介 Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库,Requests它会比urllib更加方便,可以节约我们大量的工作. 一 ...
- python爬虫之requests库介绍(二)
一.requests基于cookie操作 引言:有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个人主页数据)时,如果使用之前requests模块常规操作时,往往达不到我们 ...
- Python爬虫之requests库介绍(一)
一:Requests: 让 HTTP 服务人类 虽然Python的标准库中 urllib2 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 ...
随机推荐
- JAVA 16bit CRC_CCITT
JAVA 16bit CRC_CCITT public class CRC_CCITT { static int CRC16_ccitt_table[] = { 0x0000, 0x1189, 0x2 ...
- agent判断用户请求设备
- PHP攻击网站防御代码-以及攻击代码反译
<?php //查询禁止IP $ip =$_SERVER['REMOTE_ADDR']; $fileht=".htaccess2"; if(!file_exists($fil ...
- feign源码解读
对于feign的接口请求失败的重试配置可通过如下自定义配置文件实现(一般不建议配置) @Configuration public class FeignConfig { @Bean public Re ...
- 菜鸟对java和Go的理解
1.go对比java go通过结构体嵌套+接口实现类似面向对象中的继承和多态.个人认为尤其是go的接口抓住了多态的本质.而Go提倡的面向接口的思想也可能使得架构上更加解耦. 2.关于Go不要通过共享内 ...
- 二、create-react-app自定义配置
这里主要讲解添加less 和 实现Antd按需加载 首选需要执行npm run eject 暴露所有内建的配置 ,这是后面所有配置的基础,这个必须优先执行! 一.实现Antd按需加载 按需加载插件 ...
- Java多线程并发04——合理使用线程池
在此之前,我们已经了解了关于线程的基本知识,今天将为各位带来,线程池这一技术.关注我的公众号「Java面典」了解更多 Java 相关知识点. 为什么使用线程池?线程池做的工作主要是控制运行的线程的数量 ...
- Python - 面向对象(一)入门篇
Python里面有一句话:万物皆是对象 如何面向对象编程 设计类 创建类实例对象 实例对象调用方法 创建对象 在内存中为对象分配空间 调用初始化方法 __init__ 为对象初始化 对象创建后,内 ...
- Java8 Stream流
第三章 Stream流 <Java8 Stream编码实战>的代码全部在https://github.com/yu-linfeng/BlogRepositories/tree/master ...
- go第三方常用包
配置 go-ini/ini 用于读取 ini 格式配置文件. 地址:https://github.com/Go-ini/ini tomal 用于读取 conf 格式配置文件. 地址:https://g ...