这个系列的文章是用来记录我学习 python 爬虫的。这是第一篇。
安装 requests 库
|
|
验证安装是否成功
|
|
Requests 库的主要方法
- requests.request()
构造一个请求,支撑一下各方法的基础方法
- requests.get()
获取HTML网页的主要方法,对应HTTP的GET
- requests.head()
获取HTML网页头信息的方法,对应HTTP的HEAD
- requests.post()
向HTML网页提交POST请求的方法,对应HTTP的POST
- requests.put()
向HTML网页提交PUT请求的方法,对应HTTP的PUT
- requests.patch()
向HTML网页提交局部修改请求,对应HTTP的POST
- requests.delete()
向HTML网页提交删除请求,对应HTTP的POST
Reuqest 最重要的两个对象
Request 对象
Response 对象
包含了爬虫返回的全部内容
- r.status_code; 状态码,200表示成功,404表示失败
- r.text; HTTP响应内容的字符串形式,即, URL 对应的页面内容
r.encoding; 从 HTTP header 中猜测的响应内容编码方式
如果 header 中不存在 charset, 则认为编码是,ISO-8859-1
- r.apparent_encoding;从内容中分析出的响应内容编码方式(备选编码方式)
- r.content; HTTP 响应内容的二进制形式
爬取网页的通用代码框架
Request 的异常
- request.ConnectionError; 网络连接错误异常,如DNS查询失败,拒绝连接定
- request.HTTPError; HTTP错误异常
- request.URLRequired; URL 缺失异常
- request.TooManyRedirects; 超过最大重定向次数,长生重定向异常
- request.ConnectTimeout;链接远程服务器超时异常
- requests.Timeout;请求URL超时,产生超时异常
r.raise_for_status(); 如果不是200,产生已成requests.HTTPError
|
|
HTTP 协议
HTTP, Hypertext Transfer Protocol, 超文本传输协议。
HTTP 是一个基于”请求与响应”模式的、无状态的应用层协议。
HTTP 协议采用 URL 作为定位网络资源的标识。
URL格式: http://host[:port][path]
- host:合法的 Internet 主机域名或者 IP 地址
- port:端口号,缺省端口为80
- path:请求资源的路径
URL 是通过 HTTP 协议存取资源的 Internet 路径, 一个 URL 对应一个数据资源。
HTTP 协议对资源的操作
GET, 获取资源
HEAD,获取资源头部信息
POST,向URL位置的资源后附加新的数据
PUT,储存一个资源,覆盖原来URL的资源
PATCH,对原来的资源,进行局部更新
DELETE,删除
requests.request(method
, url
, **kwargs
)
method: 请求方式,对应get/put/post等7种
url: 请求地址**warrgs
控制访问的参数,一共13个
params
: 字典或字节序列,作为参数增加到url中data
: 字典、字节序列或者文件对象,作为 Request 的内容json
: JSON 格式的数据,作为 Request 的内容headers
: 字典,HTTP定制头cookies
:字典或CookieeJar, request中的cookieauth
: 元组,支持HTTP认证功能files
: 字典类型,传输文件timeout
: 设定的超时时间,单位秒proxies
: 字典类型,设定访问代理服务器,可以增加登录认证1234pxs = {'http':'http//balabala','https':'https"//balabala'}r= requests.request('GET','http://www.baidu.com',proxies=pxs)allow_redirects
: True/False,默认True,重定向开关stream
:True/False,默认True,获取内容立即下载开关verify
:True/False,默认True,,认证 SSL 证书开关cert
:本地SSL证书路径
网络爬虫的类型
按照尺寸区别
爬取网页,玩转网页。小规模,数据量小,爬取速度不敏感 requests 。
爬取网站,爬取系列网站. 中规模,数据规模较大,爬取速度敏感 Scrapy 库
爬取全网。大规模,搜索引擎,爬取速度关键,只能定制开发
反爬虫
来源审查: 判断 User-Agent 进行限制
检查来访 HTTP 协议头的 User-Agent 域,只响应浏览器或者友好爬虫的访问。
发布公告 Robots 协议
告知所有爬虫网站的爬取策略,要求爬虫遵守
Robots 协议
Robots Exclusion Standard 网络爬虫排除标准
作用: 网站告知网络爬虫哪些页面可以抓取,哪些不行。
形式: 在网站根目录下的 robots.txt 文件
使用:
- 网络爬虫:自动或者人工识别robots.txt, 再进行内容爬取
- 约束性: Robots 协议是建议但非约束性,网络爬虫可以不遵守,但是存在法律风险