爬虫, 即网络爬虫. 若将互联网比作一个大网, 那么爬虫就类似于一只在这张大网上爬行的蜘蛛, 若遇到了一些网络资源, 就会对资源进行抓取. 简单来说, 爬虫就是用来请求网站并提取数据的自动化程序.
通过HTTP库向目标站点发起请求, 即发送一个Request, 请求可以包含额外的headers等信息, 等待服务器响应.
如果服务器能正常响应, 会得到以个Response, Response的内容便是所要获取的页面内容, 类型可能有 HTML, Json字符串, 二进制数据 (如图片视频) 等类型.
得到的内容可能是HTML, 可以用正则表达式, 网页解析库进行解析. 可能是Json, 可以直接转为Json对象解析. 可能是二进制数据, 可以做保存或者进一步的处理.
保存形式多样, 可以存为文本, 也可以保存至数据库, 或者保存特定格式的文件.
(1) 浏览器就发送消息给该网址所在的服务器, 这个过程叫做 HTTP Request. (2) 服务器收到浏览器发送的消息后, 能够根据浏览器发送的消息内容做相应的处理, 然后把消息回传给浏览器. 这个过程叫做HTTP Response. (3) 浏览器收到服务器的Response信息后, 会对信息进行相应的处理, 然后展示.
a.1. 请求方式 主要有GET, POST两种类型, 另外还有HEAD, PUT, DELETE, OPTIONS等. a.2. 请求URL URL全称统一资源定位符, 如一个网页文档, 一张图片, 一个视频等都可以用URL唯一来定位. a.3.请求头 包含请求时的头部信息, 如User-Agent, Host, Cookies等信息. a.4.请求体 请求时额外携带的数据, 如表单提交时的表单数据.
b.1.响应状态 有多种响应状态, 如200代表成功, 301跳转, 404找不到页面, 502服务器错误. b.2.响应头 如内容类型, 内容长度, 服务器信息, 设置Cookie等等. b.3.响应体 最主要的部分, 包含了请求资源的内容, 如网页HTML, 图片, 二进制数据等.
a.网页文本 如HTML文档, Json格式文本等. b.图片 获取到的是二进制文件, 保存为图片格式. c.视频 同为二进制文件, 保存为视频格式即可. d.其他格式 只要是能请求到的, 都能获取.
a.直接处理 b.Json解析 c.正则表达式 d.BeautifulSoup(python) e.PyQuery(python) f.XPath
a.分析Ajax请求; b.Selenium/WebDriver(python); c.splash d.PyV8,Ghost.py(python)
a.文本 纯文本, Json, Xml等. b.关系型数据库 如MySQL, Oracle, SQL Server等具有结构化表结构形式存储. c.非关系型数据库 如MongoDB, Redis等Key-Value形式存储. d.二进制文件 如图片, 视频, 音频等直接保存成特定格式即可.