引言:随着大数据技术的发展,分布式储存和分布式计算,数据的价值在不断的挖掘,特别对于大量的网络数据,爬取网站数据内容,分析数据背后的隐藏价值,人工智能的背后就是需要海量的数据支持,这就是21世纪数据的价值所在!
1、网络爬虫基本流程:
1.1、发起请求:client通过HTTP库向目标站点发起请求Request等待服务器响应。
1.2、获取响应内容:server响应Response的内容就是页面的内容,类型有HTML,Json,二进制等。
1.3、解析内容:HTML可用正则表达式、网页解析库解析。Json可用直接转化为json对象解析。二进制数据,可用进一步保存或者处理。
1.4、保存数据:结构化的存储,可用保存为文本,保存至数据库,或者保存为特定格式的文件。
2、Reques与Response:
2.1、Request:
1)请求方式:主要有GET、POST两种类型,还有HEAD、PUT、DELETE、OPTIONS等。2)请求URL:URL即就是统一资源定位符,网页、图片、视频等可用URL唯一确定。
3)请求头:包含请求时的头部信息,如User-Agent、Host、COOKIEs等信息。
4)请求体:请求时额外携带的数据,如表单提交时的表单数据。
2.2、Response:
1)响应状态:响应状态,如200表示成功,301表示跳转,404表示找不到页面,502服务器错误。
2)响应头:如内容类型,内容长度,服务器信息,设置COOKIE等等。
3)响应体:最主要的部分,包含了请求的资源内容,如HTML、图片视频、二进制数据等。
3、爬虫能抓取的数据:
3.1、网页文本:HTML文档、Json格式文本等。
3.2、图片:获取到的是二进制文件,保存为图片格式。
3.3、视频:也是二进制文件,保存为视频格式即可。
3.4、其他:只要是能够请求到的数据,都能获取到信息。
4、解析方式:
4.1、直接处理:适合网页简单的。
4.2、Json解析:适合网页是Json字符串的。
4.3、正则表达式:适合对HTML解析。
4.4、库解析:BeautifulSoup库、PyQuery库、XPath库等等。
5、请求的结果与浏览器看到的结果不一样:
5.1、原因:浏览器的渲染效果。Javascript与后台的交互数据。
5.2、怎样解决Javascript渲染问题:分析Ajax请求(Json字符串)。Selenium/WebDriver解决(pip可以安装)。Splash解决(在GitHub中可以搜索安装)。PyV8、Ghost.py。
6、怎样保持数据:
6.1、文本:纯文本,Json,Xml等。
6.2、关系型数据库:如MySQL、Oracle、SQLServer等有结构化表结构化形式存储。
6.3、非关系型数据库:如MongoDB、Redis等Key-Value形式存储。
6.4、二进制文件:如图片、视频、音频等直接保存为特定格式。