Python网络爬虫案例实战:静态网页爬取:Requests的安装
在网站设计中,纯粹HTML(标准通用标记语言下的一个应用)格式的网页通常被称为“静态网页”。静态网页是相对于动态网页而言的,是指没有后台数据库、不含程序和不可交互的网页。静态网页的更新相对比较麻烦,适用于一般更新较少的展示型网站。容易让人产生误解的是静态页面都是HTML这类页面,实际上静态也不是完全静态,它也可以出现各种动态的效果,如GIF 格式的动画、Flash、滚动字幕等。
在网络爬虫中,静态网页的数据比较容易获取,因为所有数据都呈现在网页的HTML代码中。相对而言,使用AJAX动态加载网络的数据不一定会出现在HTML 代码中,这就给爬虫增加了困难。
在静态网页中,有一个强大的Requests库能够让我们方便地发送HTTP请求,这个库功能完善,而且操作非常简单。
3.1 Requests的安装
在 Windows系统下,Requests库可以通过pip安装。打开cmd或 terminal,输入:
pip install requests
即可完成安装,可以输入import requests命令来试试是否安装成功,如图3-1所示即显示安装成功。
>>> import requests
>>> r=requests.get('http://www.zhidaow.com') #发送请求
>>> r.status_code #返回码
200
>>> r.headers['content-type'] #返回头部信息
'text/html; charset=utf-8'
>>> r.encoding #编码信息
'utf-8'
>>> r.content #内容部分
b'\n<!DOCTYPE html>\n<html>\n <head>\n<script type="text/javascript" src="/fb_static/lib/jquery.js?version=0.0811"></script>\n\n<meta http-equiv="content-type" content="text/html; charset=utf-8">\n\n <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0,
...
其中,
(1)r.text是服务器响应的内容,会自动根据响应头部的字符编码进行解码。
(2)r.encoding是服务器的内容所使用的文本编码。
(3)r.status_code用于检测响应的状态码,如果返回200,则表示请求成功;如果返回的是4xx,则表示客户端错误;如果返回5xx,则表示服务器错误响应。可以用r.status_code来检测请求是否正确响应。
(4)r.content是字节方式的响应体,会自动解码gzip 和deflate编码的响应数据。