爬虫 之 requests
Requests
安装pip install requests
官方设计原则:让HTTP服务于人类
一、常用方法
import requests
url = "http://www.httpbin.org/get"
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"}
res = requests.get(url, headers=headers)
print(res.encoding) # 获取字符编码
print(res.text) # 获取HTML字符串
print(res.content) # 以二进制形式打开
print(res.status_code) # 获取响应状态码
print(res.url) # 获取响应URL
汇总:
encoding # 响应字符编码
text # 字符串
content # 字节流
status_code # HTTP响应码
url # 实际数据的URL地址
示例:
保存图片到本地
url为https://inews.gtimg.com/newsapp_bt/0/10186045426/1000import requests url = "https://inews.gtimg.com/newsapp_bt/0/10186045426/1000"
headers = {"User-Agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E"} res = requests.get(url=url, headers=headers).content with open("demo.jpg", "wb") as f:
f.write(res)
字符编码也是使用
urllib.parse.urlencode()
1. GET
requests.get()
1.1 params
查询参数
1.1.1 参数类型
字典类型,字典中键值对作为查询参数
params = {
"kw":"泰勒·斯威夫特吧"
"pn":50
}
无需编码,requests模块会将其封装好请求
1.1.2 使用方法
res = requests.get(url, params, headers=headers)
1.1.3 特点
- URL为基准的URL地址,不包含查询参数
- 该方法会自动对params字典编码,然后和url拼接
1.1.4 示例
import requests
#基准的URL地址
base_url = "http://www.baidu.com/s?"
# 查询参数
params = {
"kw":"泰勒·斯威夫特吧",
"pn":50
}
# 请求头
headers = {
"User-Agent":"Mozilla/5.0"
}
res = requests.get(url=base_url, params=params, headers=headers)
print(res.content.decode("utf-8", "ignore"))
1.2 auth
Web客户端认证
1.2.1 特点
- 针对于需要web客户端用户名密码认证的网站
auth = ('username','password')
1.2.3 使用
import requests
from config import *
base_url = "http://code.tarena.com.cn/AIDCode/aid1903/12-spider/spider_day{}_note.zip"
auth = (USERNAME, PASSWD)
headers = {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3895.5 Safari/537.36"}
def down():
for day in range(1,11):
day = str(day).zfill(2)
url = base_url.format(day)
try:
res = requests.get(url=url, auth=auth, headers=headers).content
filename = url.split("/")[-1]
with open(filename, "wb") as f:
f.write(res)
print(filename, "OK")
except Exception:
print("资源不存在")
down()
# 配置文件
USERNAME = ""
PASSWD = ""
1.3 verify
证书认证参数
1.3.1 使用场景
- 适用网站: https类型网站但是没有经过 证书认证机构 认证的网站
- 适用场景: 抛出 SSLError 异常则考虑使用此参数
1.3.2 参数类型
- verify=True(默认) : 检查证书认证
- verify=False(常用): 忽略证书认证
1.3.3 示例
response = requests.get(
url=url,
params=params,
headers=headers,
verify=False
)
1.4 proxies
代理参数
2. POST
携带form-data请求server
控制台介绍
打开浏览器,F12打开控制台,找到Network选项卡
控制台常用选项
Network: 抓取网络数据包
ALL: 抓取所有的网络数据包
XHR:抓取异步加载的网络数据包
JS : 抓取所有的JS文件
Sources: 格式化输出并打断点调试JavaScript代码,助于分析爬虫中一些参数
Console: 交互模式,可对JavaScript中的代码进行测试
抓取具体网络数据包后
单击左侧网络数据包地址,进入数据包详情,查看右侧
右侧:
Headers: 整个请求信息
General、Response Headers、Request Headers、Query String、Form DataPreview: 对响应内容进行预览
Response:响应内容

2.1data
data = {key:value} # 构造form-data
response = requests.post(url,data=data,headers=headers)
# data :post数据(Form表单数据-字典格式)
2.1.1 特点
GET请求 : 参数在URL地址中有显示
POST请求: Form表单提交数据
2.1.2 案例
有道翻译破解案例(post)
二、高级用法
1. 会话保持
步骤:
- 寻找POST地址(一般在form表单的action属性)
- 发送用户名和密码,用session保持登录
步骤:
- 实例化session对象
session = requests.session() - POST表单中的action地址,注意携带data
- GET主页地址
# 实例化session对象
session = requests.session()
# 先POST form中的action地址
session.post(url=post_url, data=data, headers=headers)
# 再GET
html = session.get(url=get_url, headers=headers).text
爬虫 之 requests的更多相关文章
- Python爬虫之requests
爬虫之requests 库的基本用法 基本请求: requests库提供了http所有的基本请求方式.例如 r = requests.post("http://httpbin.org/pos ...
- 第三百二十二节,web爬虫,requests请求
第三百二十二节,web爬虫,requests请求 requests请求,就是用yhthon的requests模块模拟浏览器请求,返回html源码 模拟浏览器请求有两种,一种是不需要用户登录或者验证的请 ...
- 孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块
孤荷凌寒自学python第六十七天初步了解Python爬虫初识requests模块 (完整学习过程屏幕记录视频地址在文末) 从今天起开始正式学习Python的爬虫. 今天已经初步了解了两个主要的模块: ...
- Python爬虫练习(requests模块)
Python爬虫练习(requests模块) 关注公众号"轻松学编程"了解更多. 一.使用正则表达式解析页面和提取数据 1.爬取动态数据(js格式) 爬取http://fund.e ...
- 自定义 scrapy 爬虫的 requests
之前使用 scrapy 抓取数据的时候 ,默认是在逻辑中判断是否执行下一次请求 def parse(self): # 获取所有的url,例如获取到urls中 for url in urls: yiel ...
- python爬虫 - python requests网络请求简洁之道
http://blog.csdn.net/pipisorry/article/details/48086195 requests简介 requests是一个很实用的Python HTTP客户端库,编写 ...
- 爬虫之requests模块
requests模块 什么是requests模块 requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求.功能强大,用法简洁高效.在爬虫领域中占据着半壁江山的 ...
- 爬虫之Requests&beautifulsoup
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕 ...
- 爬虫之requests
一.基本用法 1.GET请求 ①r=requests.get(url) --返回Response对象 def get(url, params=None, **kwargs): params={... ...
- 04.Python网络爬虫之requests模块(1)
引入 Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用. 警告:非专业使用其他 HTTP 库会导致危险的副作用,包括:安全缺陷症.冗余代码症.重新发明轮子症.啃文档 ...
随机推荐
- python basemap readshapefile二三事
今天要用到basemap读取shp文件报错,查了很多资料,都没有解决. 先是: fig,ax = plt.subplots(figsize=(15,10)) from mpl_toolkits.bas ...
- 【POJ - 2431】Expedition(优先队列)
Expedition 直接中文 Descriptions 一群奶牛抓起一辆卡车,冒险进入丛林深处的探险队.作为相当差的司机,不幸的是,奶牛设法跑过一块岩石并刺破卡车的油箱.卡车现在每运行一个单位的距离 ...
- 9个tcpdump使用实例
tcpdump能帮助我们捕捉并保存网络包,保存下来的网络包可用于分析网络负载情况,包可通过tcpdump命令解析,也可以保存成后缀为pcap的文件,使用wireshark等软件进行查看. 以下将给出9 ...
- Switch分销技术解读
Switch分销技术解读 来源:环球旅讯|2009-03-13 当Switch在海外成熟运作近40年后,该业务终于进入中国市场.但对于中国业者来说,知道Switch的人很少,了解Switch的人更少. ...
- python环境的安装 环境变量和系统变量
一.python 的安装 python 2.7 和 python 3.6的安装(一路点点点就行) 在安装的时候注意一下红框的内容,意思代表将其添加到环境变量中 环境变量是在操作系统中一个具有特定名字的 ...
- Multiple dex files define Lokhttp3/internal/wsWebSocketProtocol
Multiple dex files define Lokhttp3/internal/wsWebSocketProtocol 老套路,先晒图 图一:如题,在编译打包时遇到了如上错误,很明显这是一个依 ...
- 使用appscan安全扫描问题以及解决办法
最近在做安全扫描,把遇到的一些问题以及一些解决方法记录下,以备后用. 扫描软件: IBM Security AppScan Standard 规则: 17441 1. 已解密的登录请求 (高) - ...
- cs231n---生成模型
1 生成模型的定义和分类 生成模型是一种无监督学习方法.其定义是给一堆由真实分布产生的训练数据,我们的模型从中学习,然后以近似于真实的分布来产生新样本. 生成模型分为显式和隐式的生成模型: 为什么生成 ...
- 【openmp】for循环的break问题
问题描述:在用openmp并行化处理for循环的时候,便无法在for循环中用break语句,那么我们如何实现这样的机制呢?在stackoverflow上看到一个不错的回答总结一下. volatile ...
- 为什么说java是只有值传递?
如果你学的第一门程序语言是java可能对这个传递方式没有那么敏感,如果学了c或c++,然后再学java,那么可能对这个问题会感到困惑. 1.值传递与引用传递的概念 在将传递方式之前先理解一下形参与实参 ...