requests是在爬虫中常用到的一个库,它可以帮助我们很好的去请求我们想要爬取的网站,并返回网站的内容。

0x01:请求

get请求、post请求这两个是最常用的请求方式,此外还有类似delete、head、options。

请求的参数

params/data:这个两个是传入请求时传给服务器的参数,params用于get中,data用于post中

headers:传入请求头

proxies:传入代理

timeout:超时设置

代码演示:

 1 import requests
 2
 3 url = 'http://www.tianya.cn/'
 4 params = {'username': 'zhangan', 'password': 123456}
 5 header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0' }
 6 proxies = {
 7   "http": "http://10.10.1.10:3128",
 8   "https": "http://10.10.1.10:1080",
 9 }
10
11 # html = requests.get(url=url, params=params, headers=header, proxies=proxies, timeout=1)
12 html = requests.get(url=url, params=params, headers=header)
13 print(html.url)
14 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

转载于:https://www.cnblogs.com/liangxiyang/p/11066393.html

python的requests库相关推荐

  1. Java 爬虫--类似Python的requests库--HttpClient, HttpAsyncClient--Maven

    今天在找Java的爬虫的库,发现Java的爬虫框架挺多的,常见的有nutch,Heritrix,crawler4j等. 但我想要的是类似Python的requests库的Java库. 看到一个库叫Un ...

  2. Python之Requests库的异常

    Python之Requests库的异常 参考文章: (1)Python之Requests库的异常 (2)https://www.cnblogs.com/BASE64/p/10285466.html 备 ...

  3. python中requests库的用途-数据爬虫(三):python中requests库使用方法详解

    有些网站访问时必须带有浏览器等信息,如果不传入headers就会报错,如下 使用 Requests 模块,上传文件也是如此简单的,文件的类型会自动进行处理: 因为12306有一个错误证书,我们那它的网 ...

  4. python中requests库的用途-python中requests库session对象的妙用详解

    在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息. 妙用1 requests库的session对象能够帮我们跨请求保持某些参数,也 ...

  5. Python 的 requests 库的用法

    Python爬虫利器一之Requests库的用法:http://cuiqingcai.com/2556.html Python利用Requests库写爬虫(一):http://www.jianshu. ...

  6. python导入requests库一直报错原因总结_python pip 安装库文件报错:pip install ImportError: No module named _internal...

    centos6,python3,通过pip安装pycurl出现报错提示 Centos6.7系统,python3.6.7,通过 pip 安装pycurl出现报错: __main__.Configurat ...

  7. python中requests库入门及写入文件

    1.python中requests库入门 import requests r = requests.get("https://www.baidu.com") print(r.sta ...

  8. python网络爬虫系列教程——python中requests库应用全解

    全栈工程师开发手册 (作者:栾鹏) python教程全解 python中requests库的基础应用,网页数据挖掘的常用库之一.也就是说最主要的功能是从网页抓取数据. 使用前需要先联网安装reques ...

  9. python requests_一起看看Python之Requests库

    1 / 写在前面的话 /  今天资源君带大家来看看Python的Requests库,这个库是基于urllib3所建立的,而且被人们称为人性化的库,因为它的代码量相比于urllib中的request少了 ...

  10. Python用requests库+BeautifulSoup库+re库获取微博热搜(有详解)

    Python用requests库+BeautifulSoup库+re库获取微博热搜 import requests from bs4 import BeautifulSoup import re de ...

最新文章

  1. js中cookic的存取
  2. Hello, World!我的房车编程生活,已经 150 天了
  3. Element-UI分页组件超详细使用示例
  4. 【share】PHP站点用Squid再次疯狂加速你的WEB
  5. java 线程接口_java - 实现线程的接口
  6. 循环输入某同学 S1 结业考试的 5 门课成绩,并计算平均分
  7. Java 面向对象:instanceof和类型转换的理解
  8. C#ADO.NET操作数据代码汇总
  9. 基于Session的认证方式_实现授权功能_Spring Security OAuth2.0认证授权---springcloud工作笔记118
  10. 接口测试参数化详解(Jmeter)
  11. SQLServer如何在批量插入后,获取批量插入的自增列的值
  12. python全栈开发包括那些_简述Python全栈工程师要学会什么
  13. matlab出现错误使用 / 矩阵维度必须一致
  14. 山海演武传·黄道·第一卷 雏龙惊蛰 第二章 修闵本饰邪
  15. 【云原生 | Kubernetes 系列】---CephFS和OSS
  16. 用旭日图展示数据的三种方法
  17. 活动实录 | 京东金融PE谈如何颠覆应用运维认知
  18. NAND FLASH -WARMUP CYCLE
  19. 微星z370安装linux系统,微星Z370+8700K+1080ti安装10.13.6成功,安装思路及EFI分享
  20. 拒绝无用功,封装一个通用的PopupWindow

热门文章

  1. 微信公众号对接PHP电影网站,wxapi 微信公众号平台与电影类网站对接源码 wxapi 联合开发网 - pudn.com...
  2. vue 不识别svg_vue配置svg 图标显示不出来
  3. git 查看代码量_学会这三个命令,你就不再是git只会用三板斧的菜鸟了
  4. 计算机视觉论文-2021-06-11
  5. CVPR2020 | 跨模态行人重识别:共享与特异特征变换算法cm-SSFT
  6. Python解决使用列表副本问题
  7. rust地基蓝图在哪找_Rust错误处理的思考
  8. 深度学习(四十一)cuda8.0+ubuntu16.04+theano、caffe、tensorflow环境搭建
  9. 屏蔽预训练模型的权重。 只训练最后一层的全连接的权重。_轻量化 | 如何让笨重的深度学习模型在移动设备上跑起来?看它!...
  10. Kali Linux 从入门到精通(三)-入侵系统定制