Loading

爬虫基础原理

爬虫基础概念

数据从何而来?

数据有以下的一些来源途径:

  • 企业产生的用户数据:百度指数、阿里指数、TBI腾讯浏览指数、新浪微博指数
  • 数据平台购买数据:数据堂、国云数据市场、贵阳大数据交易所
  • 政府/机构公开的数据:中华人民共和国国家统计局数据、世界银行公开数据、联合国数据、纳斯达克。
  • 数据管理咨询公司:麦肯锡、埃森哲、艾瑞咨询
  • 爬取网络数据:如果需要的数据市场上没有,或者不愿意购买,那么可以选择招/做一名爬虫工程师,自己动手丰衣足食。

而爬虫,就是获取数据的一种方式。

什么是爬虫?

爬虫,就是抓取网页数据的自动化程序。

爬虫怎么抓取网页数据

网页三大特征:

  1. 每个网页都有自己唯一的URL(统一资源定位符)进行定位;
  2. 网页都使用HTML(超文本标记语言)来描述页面信息;
  3. 网页都通过HTTP/HTTPS(超文本传输协议)来传输HTML数据。

根据网页的特征,我们得出了爬虫的设计思路:

1. 获取网页

向服务器发送Request请求,得到Response之后解析Body部分,即网页的源代码。
Python库:UrllibRequests

2. 提取信息

分析网页的源代码,提取我们想要的数据。
提取方法

  • 通用方法:正则表达式(不过比较容易写错);
  • Python库:BeautifulSoupPyQueryLXML等;

3.保存数据

  • 保存为文本:TXT、Json等;
  • 保存到数据库:MySQL、MongoDB等;
  • 保存至远程服务器;

通用爬虫和聚焦爬虫

通用爬虫

搜索引擎用的爬虫系统。

1.目标

尽可能地把互联网的内容下载到本地服务器形成备份,再对这些网页做相关处理(提取关键字、去除广告),最后形成一个用户检索的接口。

2.抓取流程

通用网络爬虫的工作流程图

  1. 首选选取一部分已有的URL,把这些URL放到待爬取队列。
  2. 从队列里取出这些URL,然后解析DNS得到主机IP,然后去这个IP对应的服务器里下载HTML页面,保存到搜索引擎的本地服务器。之后把爬过的URL放入已爬取队列。
  3. 分析这些网页内容,找出网页里其他的URL连接,继续执行第二步,直到爬取条件结束。

3.搜索引擎如何获取一个新网站的URL?

  1. 主动向搜索引擎提交网址:http://zhanzhang.baidu.com/linksubmit/url
  2. 在其他网站里设置网站的外链。
  3. 搜索引擎会和DNS服务商进行合作,可以快速收录新的网站。

DNS:就是一种把域名解析成IP的技术。一个域名一定对应一个IP,但IP可以没有域名。

4.通用爬虫并不是万物皆可爬,它也需要遵守规则

Robots协议:协议会指明通用爬虫可以爬取网页的权限。
Robots.txt 只是一个建议,并不是所有爬虫都遵守,一般只有大型的搜索引擎爬虫才会遵守,咱们个人写的爬虫,就不管了。

5.通用爬虫工作流程

爬取网页 - 存储数据 - 内容处理 - 提供检索/排名服务

6.搜索引擎排名

  1. PageRank值:根据网站的流量(点击量/浏览量/人气)统计,流量越高,网站也越值钱,排名越靠前。
  2. 竞价排名:谁给钱多,谁排名就高。

7.通用爬虫的缺点

  1. 只能提供和文本相关的内容(HTML、Word、PDF)等等,但是不能提供多媒体文件(音乐、图片、视频)和二进制文件(程序、脚本)等等。
  2. 提供的结果千篇一律,不能针对不同背景领域的人提供不同的搜索结果。
  3. 不能理解人类语义上的检索。

为了解决以上问题,聚焦爬虫出现了。

聚焦爬虫

针对特定内容进行爬取,尽量爬取和主题相关的信息。

HTTP和HTTPS

基础概念:

  • HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法。
  • HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)简单讲是HTTP的安全版,在HTTP下加入SSL层。
  • SSL(Secure Sockets Layer 安全套接层)主要用于Web的安全传输协议,在传输层对网络连接进行加密,保障在Internet上数据传输的安全。

HTTP工作原理

网络爬虫抓取过程可以理解为模拟浏览器操作的过程。
浏览器的主要功能是向服务器发出请求,在浏览器窗口中展示您选择的网络资源,HTTP是一套计算机通过网络进行通信的规则。

HTTP的请求与响应

HTTP通信由两部分组成: 客户端请求消息 与 服务器响应消息

浏览器发送HTTP请求的过程:

  1. 当用户在浏览器的地址栏中输入一个URL并按回车键之后,浏览器会向HTTP服务器发送HTTP请求。HTTP请求主要为“Get”和“Post”两种方法。
  2. 当我们在浏览器输入URL http://www.baidu.com 的时候,浏览器发送一个Request请求去获取http://www.baidu.com 的html文件,服务器把Response文件对象发送回给浏览器。
  3. 浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如Images文件,CSS文件,JS文件。 浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件。
  4. 当所有的文件都下载成功后,网页会根据HTML语法结构,完整的显示出来了。

URL(Uniform / Universal Resource Locator):统一资源定位符,是用于完整地描述Internet上网页和其他资源的地址的一种标识方法。

基本格式:

scheme://host[:port#]/path/…/[?query-string][#anchor]

说明:

  • scheme:协议(例如:http, https, ftp)
  • host:服务器的IP地址或者域名
  • port#:服务器的端口(如果是走协议默认端口,缺省端口80)
  • path:访问资源的路径
  • query-string:参数,发送给http服务器的数据
  • anchor:锚(跳转到网页的指定锚点位置)

例如:http://item.jd.com/11936238.html#product-detail

客户端HTTP请求

URL只是标识资源的位置,而HTTP是用来提交和获取资源。客户端发送一个HTTP请求到服务器的请求消息,包括以下格式:

请求行、请求头部、空行、请求数据

四个部分组成,下图给出了请求报文的一般格式。

一个典型的HTTP请求示例:

GET https://www.baidu.com/ HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://www.baidu.com/
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
Cookie: BAIDUID=04E4001F34EA74AD4601512DD3C41A7B:FG=1; BIDUPSID=04E4001F34EA74AD4601512DD3C41A7B; PSTM=1470329258; MCITY=-343%3A340%3A; BDUSS=nF0MVFiMTVLcUh-Q2MxQ0M3STZGQUZ4N2hBa1FFRkIzUDI3QlBCZjg5cFdOd1pZQVFBQUFBJCQAAAAAAAAAAAEAAADpLvgG0KGyvLrcyfrG-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFaq3ldWqt5XN; H_PS_PSSID=1447_18240_21105_21386_21454_21409_21554; BD_UPN=12314753; sug=3; sugstore=0; ORIGIN=0; bdime=0; H_PS_645EC=7e2ad3QHl181NSPbFbd7PRUCE1LlufzxrcFmwYin0E6b%2BW8bbTMKHZbDP0g; BDSVRTM=0
posted @ 2021-12-24 21:34  活用数据  阅读(245)  评论(0编辑  收藏  举报