开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天
一、本篇笔记重点内容:
- 网络爬虫的基本架构
- 模块介绍
- HTTP请求和响应的结构
- 获取(爬取)网页数据的方式
网络爬虫的基本架构
模块介绍
爬取模块、抽取模块、存储模块
- 爬取模块:从一个URL开始批量的获取数据,请求某网页数据
- 抽取模块:处理获取的数据抽取指定的信息,选择抽取方法。抽取URL加入队列,使程序持久化。将原本被HTML、XML、JSON结构化的数据进一步结构化,方便数据库存储。
- 存储模块:将抽取的信息存入txt、csv、数据库等常见的数据存储中
HTTP请求和响应的结构
HTTP请求的方法
HTTP请求的方法包括GET,POST,PUT,DELETE,HEAD,OPTIONS,TRACE等
面向数据分析的爬虫需要了解GET和POST方法:
post要携带用户信息的请求方式,POST方法是将数据放在消息体中,这些数据不会被浏览器缓存,所以安全性更好
get根据URL直接获取网页信息(即某个网址所包含的信息)
GET方法将需要的参数附在URL的后面,以“?”分隔URL和参数,多个参数之间用“&”连接
例如:read.douban.com/?dcn=entry&…
HTTP请求和响应由两部分组成
消息头(Message Header) 消息体(Message Body)
常见的请求头有:
- Accept:客户端支持的MIME类型
- User-Agent:客户端标识。如User-Agent: Mozilla/5.0
- Accept-Encoding:客户端支持的压缩方式。如gzip, deflate
- Host:要请求的服务器域名。通常与所请求的 URL 保持一致
- Referer :用于标识当前请求的来源页面
- Cookie:代表客户端的状态。例如,Cookie: user_id=108088
获取(爬取)网页数据的方式
Ø 使用URLlib:使用urllib.request库向httpbin.org发起请求,使用url和data向服务器发送get和post请求与urllib库一致。
Ø 使用URLlib.request:urllib.request—urllib.request.urlopen。urlopen函数创建一个表示指定url或者被封装request的对象,以此为出发点获取数据流,并操作数据。
Ø 使用requests库:基于 urllib,发起GET和POST请求,代码量小,简洁明快。