1、什么是爬虫?
网络爬虫,顾名思义"网络上爬来爬去的蜘蛛"
请求网站并提取数据的自动化程序。
2、爬虫的基本流程
①发起请求
通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待服务器响应。
②获取响应内容
如果服务器能正常响应,会得到一个Response,Response的内容是所要获取的页面内容,类型可能有HTML、Json字符串、二进制数据(如图片、视频)等类型。
③解析内容
得到的内容可能是HTML,可以用正则表达式、网页解析库进行解析。可能是Json,可以直接转为Json对象解析。可能是二进制数据,可以做保存或进一步的处理。
④保存数据
保存形式多样,可以存为文本,也可以保存到数据库,或者保存特定格式的文件。
3、什么是Request和Response?
Request和Response工作流程如下图:
一、Request包含什么?
①请求方式
主要有GET、POST两种类型,另外还有HEAD、PUT、DELETE、OPTIONS等。
②请求URL
URL全球统一资源定位符,如一个网页文档,一张图片,一个视频等都可以用URL唯一来确定。
③请求头
包含请求时头部信息,如User-Agent、Host、Cookies等信息。
④请求体
请求时额外携带的数据,如表单提交时的表单数据。
二、Response包含什么?
①响应状态
有多种响应状态,如200代表成功,301代表跳转,404找不到页面,502服务器错误。
②响应头
如内容类型,内容长度,服务器信息,设置Cookie等等。
③响应体
最主要的部分,包含请求资源的内容,如网页HTML、图片二进制数据等。
4、怎么样把获取的数据进行解析?
解析方式:
①直接处理(内容简单)
②Json解析(Ajax请求)
③正则表达式(规则字符串、文本)
④BeautifulSoup
⑤PyQuery
⑥XPath
5、为什么我们抓到的和浏览器看到的不一样?
怎么解决JavaScript渲染的问题?
①分析Ajax请求
②Selenium/WebDriver
③Splash
④PyV8、Ghost.py
6、可以怎样保存数据?
①文本
纯文本、Json、Xml
②关系型数据库
如MySQL、Oracle、SQL Server等具有结构化表结构形式存储。
③非关系型数据库
如MongoDB、Redis等Key-Value形式存储。
④二进制文件
如图片、视频、音频等直接保存成特定格式即可。