爬虫说白了就是模拟发送网络请求获取数据。在python里,requests可以很好地帮助我们完成这个过程。

本篇只讲怎么获取数据、控制台输出数据和保存数据。至于提取和解析数据在以后的篇目中会讲到。

一、安装

方法1:cmd输入“pip install requests”

方法2:pycharm配置解释器的位置输入“requests”,再点击右下角的install package

注意事项:1.指定版本安装格式:“pip install requests==X.X.X”。(默认安装最新版本)

2.如果下载速度慢或者报连接超时错误,可尝试用镜像源下载。例如使用豆瓣镜像源: “pip install -i https://pypi.douban.com/simple requests”。

二、需要知道的一些内容

1.最常用到两种网络请求方式:GET和POST。在python里相对应的用法是“requests.get()”和“requests.post()”。

2.GET方法查询字符串(名称/值对)是在 GET 请求的 URL 中发送的,而POST方法查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的。

3.在浏览器开发者工具的network里能直接体现出两者不同的内容:GET请求一般含有“Query String Parametrs”,POST请求含有“form data”或“Payload”

三、requests库的常用参数。

1.url。为我们需要请求的连接,为必填参数。用法示例:requests.get(url)或requests.get(url=url)。(GET、POST均适用)

2.headers。为我们发送请求的请求头,不是必填参数,但是一般网站都会有关于请求头的反爬,所以一般还是需要加上的。用法示例:requests.get(headers=headers)。(GET、POST均适用)

3.proxies。我们通过这个参数添加ip代理,不是必填参数,但是当我们大批量爬取的时候,一些网站会把我们识别出来,将我们的ip封掉,对此我们使用这个方法保证程序的运行。(GET、POST均适用)

4.cookies。归根结底用于身份验证。

5.params。用于GET请求内容的传递。我们一般不使用这个参数,因为我们可以直接把这部分内容添加到url里。

6.data。用于POST请求的表单传递。一般为POST的必填参数。在network内查看content-type的对应值(一般为application/x-www-form-urlencoded 或 multipart/form-data),方可确定我们传递内容的具体形式。

7.json。用于POST请求的表单传递。一般为POST的必填参数。一般在表单为“Payload”类型时使用较多。和data的区别是,通过json的方式传递的任何类型,都会被转化成“json”数据类型。(在python叫字符串,在前端叫json)

8.timeout。用于设置请求超时的时间,单位为秒。如果在指定时间里仍没有与服务器连接成功,将会报超时错误,与异常搭配使用。

9.verify。访问某些网站会出现ssl错误,添加“verify=False”即可解决,可能添加后再次运行会报红字警告。如果想让这些不再显示,只需在程序最前加上“requests.packages.urllib3.disable_warnings()”

10.allow_redirects。重定向,默认为“True”。一般不需要添加改动。我一般用python分析api接口的时候才会使用这个参数。(我们大多数情况下直接在浏览器f12里分析就足够了)

11.requests.session()。维持回话状态,只需创建session类,其余和其他内容一样。(requests.session()和requests.Session()本质上是一样的,不理解的可以看他的源码)

四、所得数据的常用处理方法。

1.控制台输出。“response.text”或“response.content.decode('文字编码类型')”。(第一种有可能出现乱码,两种方法都可以指定解码方式,但第二种实际用起来更方便,所以优先推荐第二种)

2.把请求得到的文字、图片、音视频保存至本地。首先使用“response.content”获得二进制对象,然后“with open('你的文件名.要保存的格式','wb')as f”保存即可。

3.文字另一种保存本地的方法。首先“response.content.decode('文字编码类型')”。然后然后“with open('你的文件名.要保存的格式','w')as f”保存即可。

4.“json”数据。在python里叫做字符串的数据,一般直接“response.json()”即可。注意事项在以后的解析篇再详细说明。

五、可能存在的疑问

1.有没有别的请求类型? 答:有。一共有8种。除了GET和POST,还有OPTIONS、HEAD、PUT、DELETE、TRACE和CONNECT。

2.GET是不是要比POST简单? 答:不是。难在破解,请求方式单对我们来说无所谓。

3.这些够用吗,我想把所有的先学完再开始实战。 答:绝对够用,没必要先学完。既然踏上了编程这条船,那就要明白一件事,我们不可能把所有都学会。只要够用,在学有余力的情况下再丰富自己就可以了

4.最难的爬虫是什么样的? 答:与其说难得什么样,不如说哪些难破解。比如极客滑动验证码,反debug,js混淆,js自定义加密等等。(我也只能破破简单的)

5.内容太多了,头晕,怎么才能快速掌握这些内容? 答:实操。我给了大家很多的示例,目的就是这个,大家可以找些自己感兴趣网站按着我的示例写爬虫。

6.很多加密的参数都是通过JavaScript生成的,有没有必要先学JavaScript? 答:从我初学到现在来看,个人觉得没必要从头看到尾,简单了解下原生JavaScript、jQuery框架和require框架就可以了。

7.我现在破解不了,甚至以后也破解不了JavaScript该怎么办? 答:学selenium和pyppeteer。这两个会在以后的篇章里说到。这两个基本按道理可以爬取到所有内容。只是有很多缺点,获取数据速度难最为致命。

六、请求示例

每次复制User-Agent太麻烦,下例均用useragentxxc库生成随机请求头。

源码地址:https://github.com/clearDreamXXC/python_teach/blob/master/requests%E4%BD%BF%E7%94%A8%E7%A4%BA%E4%BE%8B.py示例中需要的模块

1.最基本的请求。(我们在“三”里说了,绝大多数链接都有请求头的检验。我们把headers当成必填参数就可以了,一般填入“Referer”和“User-Agent”即可)堆糖网

2.post请求需要添加表单的示例。(content-type的不同取值对我们传递的表单格式会有不同要求。同时把这一键值对添加到headers里,这里不多解释,大家就直接加上以防万一)哔哩哔哩

3.需要设置请求超时的请求。(与异常搭配)steam模拟登陆

4.需要代理的请求。(http代理和https代理使用效果上是没有区别的)萝卜研投网

5.需要cookie的请求。(两种方式,第二种更常用:1.以字典形式加到参数cookies的位置。2.以字符串形式添加到headers里。)12306官网

6.控制台输出请求到的数据。(使用print)结合print

7.保存音频、视频、图片和文字的简单示例。抖音短视频

8.比较难的,各类参数都需要的请求。(在这里只列举难的但也不是很难的)携程国际-港澳台机票

python爬虫模块request_爬虫模块篇【requests】相关推荐

  1. 洗礼灵魂,修炼python(70)--爬虫篇—补充知识:json模块

    在前面的某一篇中,说完了pickle,但我相信好多朋友都不懂到底有什么用,那么到了爬虫篇,它就大有用处了,而和pickle很相似的就是JSON模块 JSON 1.简介 1)JSON(JavaScrip ...

  2. 洗礼灵魂,修炼python(54)--爬虫篇—urllib2模块

    urllib2 1.简介 urllib2模块定义的函数和类用来获取URL(主要是HTTP的),他提供一些复杂的接口用于处理: 基本认证,重定向,Cookies等.urllib2和urllib差不多,不 ...

  3. 爬虫学习笔记(三)requests模块使用

    前面在说爬虫原理的时候说了,就写代码自动化的获取数据,保存下来数据,那怎么写代码来请求一个网址,获取结果呢,就得用requests模块了. 这篇博客说一下requests模块的使用,requests模 ...

  4. python爬虫下载模块_python爬虫——下载ted视频

    鄙人长期知乎潜水,这是我的第一篇知乎文章,如有不好的地方请多指教 自学爬虫一个月有余,又是一个英语学习爱好者,突然心血来朝想去ted上面看下如何爬视频 1.所用工具 requests模块 --爬虫核心 ...

  5. python jsonpath库_Python爬虫(十六)_JSON模块与JsonPath

    本篇将介绍使用,更多内容请参考:Python学习指南 数据提取之JSON与JsonPATH JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它是的人们很容易 ...

  6. Python爬虫辅助利器PyQuery模块的安装使用攻略

    这篇文章主要介绍了Python爬虫辅助利器PyQuery模块的安装使用攻略,PyQuery可以方便地用来解析HTML内容,使其成为众多爬虫程序开发者的大爱,需要的朋友可以参考下 Windows下的安装 ...

  7. 从入门到入土:Python爬虫学习|Selenium自动化模块学习|简单入门|轻松上手|自动操作浏览器进行处理|chrome|PART01

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  8. Python 爬虫 性能 相关( asyncio 模块 --- 高性能爬虫 )

    From:https://www.cnblogs.com/bravexz/p/7741633.html 爬虫应用 asyncio 模块 ( 高性能爬虫 ):https://www.cnblogs.co ...

  9. 孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9并使用pydocx模块将结果写入word文档...

    孤荷凌寒自学python第七十九天开始写Python的第一个爬虫9 (完整学习过程屏幕记录视频地址在文末) 今天在上一天的基础上继续完成对我的第一个代码程序的书写. 到今天终于完成了对docx模块针对 ...

最新文章

  1. hub-spock-ospf,nbma
  2. 渗透知识-XSS跨站脚本攻击
  3. 《大道至简》阅读笔记二
  4. linux ssh服务的优化,SSH服务端配置、优化加速、安全防护
  5. java 删除文件失败_java 文件删除失败(被进程占用)
  6. 浅谈Git的基本工作流程与简单的Git命令
  7. php编译参数注解--不明白许多参数的作用 慎用 –with-curlwrappers参数
  8. ReactiveCocoa入门教程——第一部分
  9. Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的适用版本
  10. JavaScript闭包理解【关键字:普通函数、变量访问作用域、闭包、解决获取元素标签索引】...
  11. redmine 和 gitolite 的整合
  12. Solr 中 Schema 结构说明
  13. Bootstrap基础3(表单)
  14. win乌班图双系统安装(win11、Ubuntu20.04)及安装后的环境、软件配置
  15. 20220518 十堂课教会管理者打胜仗———管理者如何快速上手,带领团队打胜仗?
  16. 企业借力OA系统打造数字档案馆,提高档案管理、查阅效率
  17. 【冰爪游戏】MC教程 —— 自定义皮肤
  18. 亚马逊账号被关联能申诉得回来吗
  19. BIM → CIM,捷码赋能智慧城市多行业应用开发
  20. MindSpore报错ValueError:For xx,the x shape:xx must be equal to xxx

热门文章

  1. harrynull.tech/cipher游记(分享通关工具和粗糙的通关过程)持续更新
  2. BotVS开发基础—2.7 指标MACD
  3. 怎么把caj文件转换成pdf文件
  4. 不看好马云的菜鸟网络
  5. JS实现鼠标滑过图片的抖动效果
  6. windows11创建文件夹的键盘快捷方式 - Ctrl+Shift+N
  7. webRTC(二十一):android 录屏功能
  8. mapbox矢量切片_使用Tippecanoe工具处理大数据量的矢量数据切片
  9. 计算机英语 自我介绍ppt,大学生英语自我介绍ppt精编版.ppt
  10. arcgispro导入rvt数据_BIM