抱歉,你查看的文章不存在

Python爬虫实战入门二:从一个简单的HTTP请求开始

一、为什么从HTTP请求开始

无论我们通过浏览器打开网站、访问网页,还是通过脚本对URL网址进行访问,本质上都是对HTTP服务器的请求,浏览器上所呈现的、控制台所显示的都是HTTP服务器对我们请求的响应。 以打开我的个人网站为例,我们在地址栏输入“zmister.com”,浏览器上呈现的是下图:

我们按F12打开网页调试工具,选择“network”选项卡,可以看到我们对zmister.com的请求,以及zmister.com给我们的响应:

二、基本的HTTP概念

通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个指示头域结束的空行和可选的消息体组成。 我们看上面对zmister.com的HTTP示例来说明:

1、HTTP概览

Request URl:表示请求的URL Request Method:表示请求的方法,此处为GET。除此之外,HTTP的请求方法还有OPTION、HEAD、POST、DELETE、PUT等,而最常用的就是GET和POST方法:

POST: 向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。

GET: 向指定的资源发出“显示”请求。

Status Code:显示HTTP请求和状态码,表示HTTP请求的状态,此处为200,表示请求已被服务器接收、理解和处理; 状态代码的第一个数字代表当前响应的类型,HTTP协议中有以下几种响应类型:

1xx消息——请求已被服务器接收,继续处理

2xx成功——请求已成功被服务器接收、理解、并接受

3xx重定向——需要后续操作才能完成这一请求

4xx请求错误——请求含有词法错误或者无法被执行

5xx服务器错误——服务器在处理某个正确请求时发生错误

2、HTTP请求头

Accept:表示请求的资源类型; Cookie:为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据; User-Agent:表示浏览器标识; Accept-Language:表示浏览器所支持的语言类型; Accept-Charset:告诉 Web 服务器,浏览器可以接受哪些字符编码; Accept:表示浏览器支持的 MIME 类型; Accept-Encoding:表示浏览器有能力解码的编码类型; Connection:表示客户端与服务连接类型;

基本的HTTP介绍就结束了,如果需要更加详细的HTTP知识,推荐一本HTTP入门书《图解HTTP》 下面,我们用Python来实现一个简单的HTTP请求

三、用Python进行HTTP请求

这里继续用我的个人网站http://zmmister.com 作示例 打开代码编辑器,输入以下代码:

#coding:utf-8
import requests

url = "http://zmister.com"data = requests.get(url)

这样,就完成了一个简单的对zmister.com的HTTP请求。 我们看看这个请求的状态码:

data.status_code

结果返回的是:200 再看看响应的主体消息: data.content 结果返回了一大串编码了的HTML源码,这些HTML源码未经解码和解析,看上起很是凌乱

对这些凌乱的html源码进行处理,就需要使用到BeautifulSoup模块了,下一章咱们继续。

州的先生:爬虫、数据采集、分析

原文发布于微信公众号 - 州的先生(zmister2016)

原文发表时间:2017-01-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

州的先生

6 篇文章54 人订阅

相关文章

来自专栏Python中文社区

Nginx+uwsgi部署Django应用

本文目的:在centos7.x服务器上利用nginx和uwsgi部署Django应用

3354
来自专栏蓝天

Shell关于Wget命令的使用技巧

wget 是一个命令行的下载工具。对于我们这些 Linux 用户来说,几乎每天都在使用它。下面为大家介绍几个有用的 wget 小技巧,可以让你更加高效而灵活的使...

872
来自专栏阿杜的世界

【译】Linux概念架构的理解摘要一、Linux内核在整个计算机系统中的位置二、内核的作用三、Linux内核的整体架构四、高度模块化设计的系统,利于分工合作。五、系统中的数据结构六、子系统架构七、结论

声明:本文翻译自Conceptual Architecture of the Linux Kernel

1224
来自专栏性能与架构

Linux lsof 命令的实用案例

lsof 简介 lsof(list open files)是一个列出当前系统中所有打开文件的工具 Linux中一切皆文件,所以在系统中,被打开的文件可以是普...

6938
来自专栏python3

tkinter打包成exe程序

python脚本如果在没有安装python的机器上不能运行,所以将脚本打包成exe文件,降低脚本对环境的依赖性,同时运行更加迅速

3052
来自专栏行者常至

(Java)请求方式之GET、POST 浅析

·不同的请求方式不仅仅在数据传输时会有所不同,在表单提交及服务器端处理时也会采用不同的方式。而区分不同种类的请求方式也会使得浏览器采用不同的缓存方式处理后续请求...

1542
来自专栏张尧博客

Ubuntu软件常用升级命令

5396
来自专栏技术博文

关于inodes占用100%的问题及解决方法

系统:Centos;一般的Linux系统也可以用这种方法。 情况描述:今天session文件写入时,写入不了,而且连接到服务器上开启服务都开不了,起始以为磁盘空...

4129
来自专栏北京马哥教育

LVM详解

petmaster出品 必是精品 一、概述 LVM全称为Logical Volume Manager,即逻辑卷管理器。LVM可以弹性的调整文件系统的容...

3119
来自专栏landv

centos查看系统/硬件信息及运维常用命令

[root@yan-001 ~] # uname -a # 查看内核/操作系统/CPU信息的linux系统信息命令

7712

扫码关注云+社区

领取腾讯云代金券