未加星标

Python入门(二):请求

字体大小 | |
[开发(python) 所属分类 开发(python) | 发布者 店小二05 | 时间 2017 | 作者 红领巾 ] 0人收藏点击收藏

这次我们入门一下爬虫的请求模块。本篇不会深入地讲请求相关的知识,主要关注在爬虫部分的相关知识,点到为止。

一 、HTTP协议

我们在第一篇爬虫教程讲到了HTTP协议这个东西。讲HTTP协议之前,我们要先讲讲我们平时浏览的网页是怎么来的。

最简单的模型是这样的:浏览器(客户端)告诉服务器说,我想请求一个网页。服务器收到消息说,好的给你。然后浏览器(客户端)收到网页,并且渲染解析成我们看到的网页。这个部分就涉及到消息怎么传送。事实上从最底层的物理层到最顶层的应用层是有很多协议的。我们只讨论最上面的应用层。最常用的应用层就是HTTP协议。

所谓HTTP协议,中文名是超文本传输协议。这是一种可靠的可以把各种各样格式的文件在互联网上传输的协议。事实上HTTP协议总共有七步,这次我们先讲一下主要的过程。HTTP协议的传输主要通过HTTP报文实现的:


1. 客户端(比如浏览器) :发送请求报文到服务器
2. 服务器:接收请求报文并处理
3. 服务器:发送响应报文给客户端
4. 客户端:处理接收到的内容。

这就是一个比较粗略的流程。我们先不讨论报文,在后面深入讲解反爬技巧的时候我们再讨论怎么在报文上下功夫。

萌萌哒的浏览器宝宝想发送请求的时候,就必须要知道服务器的名字。比如,我们需要使用bing搜索,我们就需要bing的名字:微软必应搜索 - 全球搜索,有问必应 (Bing) 。这个名字就是URL。(至于里面详细的过程我们也先跳过。)那么,在发送请求的时候,就需要知道URL。关于URL的语法,我们也先不深入讨论,在后面我们升级单页爬虫的时候再详细说。

另外,客户端请求的方法也是不一样的。比如,打开bing的首页的时候,是什么都不发送的。但是,你登陆知乎的时候,是需要输入账号密码的。所以这就有两种方法:一种是客户端不发送数据,一种是客户端发送数据,然后接收响应报文。前者就是get方法,后者就是post方法。这是HTTP协议最常用的两种方法。(其他方法我们先忽略不计,在实际上的使用中相对比较少。)

那么怎么判断这个过程是不是成功呢?响应报文的状态码会告诉你。大家最熟悉的就是404了。大家先记住开头的一位数字就好:2开头的是正常,3开头的是重定向(定向到另外一个店铺),4开头的是客户端异常,5开头的是服务器异常。

到这里做个小结:HTTP协议是一种在互联网上传输文件的协议,主要过程是客户端发送请求报文、服务器接收并发送响应报文、客户端接收;访问某个服务器资源需要知道它的URL;主要的HTTP请求方法有get(客户端不发数据)和post(客户端发数据)

二、Requests入门

requests的官方主页(Requests: HTTP for Humans)就写着大大的“HTTP for human beings". requests也确实做的非常好,它把HTTP协议封装的非常好,非常适合爬虫等各种各样的网络编程使用。(所以赶快放弃urllib、urllib2 for python2 and urllib for Python3 这些标准库吧~)

这里我们继续使用Python解释器。我们来顺着前面说的讲讲要怎么实现HTTP协议的过程。事实上高度封装的requests都搞定了:


Python入门(二):请求

最后,我们来写一个完整的请求函数,以后我们再在这个基础上不断升级:


Python入门(二):请求

完整到只有两行?这充分显示了requests库对HTTP协议封装的到位。


当然,还有很多很多没有讲到的。这些后续都会在爬虫教程中慢慢渗透,之后会有更系统的介绍。

End.

作者: iGuo (中国统计网特邀认证作者)

就读于厦门大学王亚南经济研究院,China's Prices Projectleader。擅长的领域主要是数据分析相关,包括爬虫、数据清洗、数据分析、数据可视化等,正在研究海量数据的计算和挖掘。 GitHub:https://github.com/Guo-Zhang项目网站:http://www.xmucpp.com/ 项目地址:https://github.com/xmucpp

来源:微信公众号Python中文社区

本文为中国统计网原创文章,需要转载请联系中国统计网(小编微信:itongjilove),转载时请注明作者及出处,并保留本文链接。

本文开发(python)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程

分页:12
转载请注明
本文标题:Python入门(二):请求
本站链接:http://www.codesec.net/view/532208.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(python) | 评论(0) | 阅读(18)