数据采集基础知识(爬虫相关)(一) | 「掘金日新计划 · 12 月更文挑战」

168 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第2天

一、本篇笔记重点内容:

  • 网络爬虫的基本架构
  • 模块介绍
  • HTTP请求和响应的结构
  • 获取(爬取)网页数据的方式

网络爬虫的基本架构

image.png

模块介绍

爬取模块、抽取模块、存储模块

  • 爬取模块:从一个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请求,代码量小,简洁明快。