python的requests库
requests是在爬虫中常用到的一个库,它可以帮助我们很好的去请求我们想要爬取的网站,并返回网站的内容。
0x01:请求
get请求、post请求这两个是最常用的请求方式,此外还有类似delete、head、options。
请求的参数
params/data:这个两个是传入请求时传给服务器的参数,params用于get中,data用于post中
headers:传入请求头
proxies:传入代理
timeout:超时设置
代码演示:
import requests url = 'http://www.tianya.cn/'
params = {'username': 'zhangan', 'password': 123456}
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0' }
proxies = {
"http": "http://10.10.1.10:3128",
"https": "http://10.10.1.10:1080",
} # html = requests.get(url=url, params=params, headers=header, proxies=proxies, timeout=1)
html = requests.get(url=url, params=params, headers=header)
print(html.url)
print(html.request.headers) 输出如下:
http://www.tianya.cn/?username=zhangan&password=123456
{'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
第七行输出请求的url,可以看到,在get请求时params传入的参数被直接放在了后面,另外,我们在请求时利用headers参数设置了一个请求头,这样伪装成了浏览器,而不是我们使用的python requests。第八行,输出请求的请求头
如果需要设置代理和超时时间,像11行那样传入proxies和timeout参数就行了,由于这里的代理时无效的,所以没有运行,这又一个免费获取代理的网站,大家需要的话可以去这上面找:https://www.xicidaili.com/
0x02:获取
除了能够获取到url和请求头之外,还能获取到更多的内容。
获取网页源码:.text / .content 前者是以文本的方式获取,后者是以二进制的方式获取到。
获取状态码:.status_code
获取响应头:.headers
获取cookies:.cookies
稍微改一下上面的代码:
url = 'http://www.tianya.cn/'
params = {'username': 'zhangan', 'password': 123456}
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0' }
proxies = {
"http": "http://10.10.1.10:3128",
"https": "http://10.10.1.10:1080",
} # html = requests.get(url=url, params=params, headers=header, proxies=proxies, timeout=1)
html = requests.get(url=url, params=params, headers=header)
print(html.status_code) # 获取状态码
print(html.headers) # 获取响应头
print(html.cookies) # 获取到cookies 输出结果如下:
200
{'Server': 'nginx', 'Date': 'Wed, 24 Jul 2019 10:57:06 GMT', 'Content-Type': 'text/html; charset=UTF-8', 'Transfer-Encoding': 'chunked', 'Connection': 'close', 'Vary': 'Accept-Encoding', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Expires': 'Thu, 01 Nov 2012 10:00:00 GMT', 'ETag': 'W/"6de10a5VRB4"', 'Last-Modified': 'Fri, 19 Jul 2019 09:40:47 GMT', 'Content-Encoding': 'gzip'}
<RequestsCookieJar[]>
依次输出了返回的状态码/服务器的响应头/cookies。
除此此外,requests还可保持会话维持,身份认证,SSL证书验证等。静谧大佬的爬虫文章写的很棒,大家可以参考下:https://cuiqingcai.com/5523.html
python的requests库的更多相关文章
- 【转】使用Python的Requests库进行web接口测试
原文地址:使用Python的Requests库进行web接口测试 1.Requests简介 Requests 是使用 Apache2 Licensed 许可证的 HTTP 库.用 Python 编写, ...
- Python爬虫—requests库get和post方法使用
目录 Python爬虫-requests库get和post方法使用 1. 安装requests库 2.requests.get()方法使用 3.requests.post()方法使用-构造formda ...
- python中requests库使用方法详解
目录 python中requests库使用方法详解 官方文档 什么是Requests 安装Requests库 基本的GET请求 带参数的GET请求 解析json 添加headers 基本POST请求 ...
- 解决python的requests库在使用过代理后出现拒绝连接的问题
在使用过代理后,调用python的requests库出现拒绝连接的异常 问题 在windows10环境下,在使用代理(VPN)后.如果在python中调用requests库来地址访问时,有时会出现这样 ...
- python利用requests库模拟post请求时json的使用
我们都见识过requests库在静态网页的爬取上展现的威力,我们日常见得最多的为get和post请求,他们最大的区别在于安全性上: 1.GET是通过URL方式请求,可以直接看到,明文传输. 2.POS ...
- python导入requests库一直报错原因总结 (文件名与库名冲突)
花了好长时间一直在搞这个 源代码: 一直报如下错误: 分析原因: 总以为没有导入requests库,一直在网上搜索各种的导入库方法(下载第三方的requests库,用各种命令工具安装),还是报错 后来 ...
- python爬虫---requests库的用法
requests是python实现的简单易用的HTTP库,使用起来比urllib简洁很多 因为是第三方库,所以使用前需要cmd安装 pip install requests 安装完成后import一下 ...
- Python爬虫---requests库快速上手
一.requests库简介 requests是Python的一个HTTP相关的库 requests安装: pip install requests 二.GET请求 import requests # ...
- python 之Requests库学习笔记
1. Requests库安装 Windows平台安装说明: 直接以管理员身份打开cmd运行界面,使用pip管理工具进行requests库的安装. 具体安装命令如下: >pip instal ...
- Python爬虫--Requests库
Requests Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库,requests是python实现的最简单易用的HTTP库, ...
随机推荐
- C++ try catch 示例代码
#include<iostream> void f1() { throw std::string("error happen"); } void f2() { try ...
- 鲜贝7.3--navicat破解
Navicat for MySQL 安装软件和破解补丁: 链接:https://pan.baidu.com/s/1yy5JkrXk5NV129wzkzntqw 提取码:htc2 1.安装Navicat ...
- Python 栈(stack)
Python 栈(stack) 栈(stack)又名堆栈,它是一种运算受限的线性表 栈只能在一端进行插入和删除操作,它按照先进后出(FILO)的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶 ...
- ajax技术初识与应用
一.ajax技术初识 AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术.Ajax不是一种新的编 ...
- mysql 数据库信息常用命令
Mysql查询数据库状态及信息 使用MySQL时,需要了解当前数据库的情况,例如当前的数据库大小.字符集.用户等等.下面总结了一些查看数据库相关信息的命令 1:查看显示所有数据库 mysql> ...
- 机器学习之KNN
KNN做回归和分类的主要区别在于最后做预测时候的决策方式不同.KNN做分类预测时,一般是选择多数表决法,即训练集里和预测的样本特征最近的K个样本,预测为里面有最多类别数的类别.而KNN做回归时,一般是 ...
- [LOJ 6435][PKUSC 2018]星际穿越
[LOJ 6435][PKUSC 2018]星际穿越 题意 给定 \(n\) 个点, 每个点与 \([l_i,i-1]\) 之间的点建立有单位距离的双向边. \(q\) 组询问从 \(x\) 走到 \ ...
- uni-app 环境配置,uni.request封装,接口配置,全局配置,接口调用的封装
1.环境配置 (可参考uni-官网的环境配置) common文件夹下新建config.js let url_config = "" if(process.env.NODE_ENV ...
- H5 背景图片自适应屏幕问题解决办法
今天也是偶然遇到这个问题的,平成很少用到关于css的内容,就在网上找了很多个方法,最后总结以下几种很实用的方法 方法1: <style> body{ background:url(beij ...
- 云原生生态周报 Vol.10 | 数据库能否运行在 K8s 当中?
业界要闻 IBM 以总价 340 亿美元完成里程碑意义的红帽收购:这是这家拥有 107 年历史的公司史上规模最大的一笔收购,该收购金额在整个科技行业的并购史上也能排到前三.在当天公布的声明中,IBM ...