首页 > 技术文章 > 爬虫原理与数据抓取 一

pyrene 2017-05-26 15:01 原文

爬虫概念

一、大数据时代,获取数据的方式

a)         企业生产的用户数据:大型互联网公司有海量用户,所以积累数据有天然的 优势

b)         有数据意识的中小型企业,也开始积累的数据

c)         数据管理咨询公司:

                         i.              国内最大的数据公司艾瑞

                       ii.              国际上麦肯锡

d)         政府机构提供的公开数据

e)         第三方数据平台购买数据:通过各个数据平台购买各行各业需要的数据,根据获取难度不同,价格不同

                         i.              数据堂

                       ii.              贵阳大数据交易所

f)          爬虫爬去数据

二、什么是爬虫?

爬虫:就是抓取网页数据的程序

三、爬虫怎么抓取网页数据?

网页三大特征

1、  每个网页都有自己的URL(同一资源定位符)来进行定位

2、  网页都使用HTML(超文本标记语言)来描述网页信息

3、  网页都是用HTTP/HTTPS(超文本传输协议)协议来传输HTML数据

爬虫的设计思路:

1、  首先确定需要爬取的网页URL地址

2、  通过HTTP协议来获取对应的HTML页面

3、  提取HTML页面里游泳的数据

a)         如果是需要的数据,就保存起来

b)         如果是页面里的其他URL,那就继续执行第二步

爬虫内容概述:

1、  语言基本语法

2、  如何抓取HTML页面

  a)         HTTP请求的处理,urllib\urllib2\requests

  b)         处理后的请求可以模拟浏览器发送请求,获取服务器响应的文件

3、  解析服务器响应内容

  a)         re、xpath、beautifulSoup4(bs4)、jsonpath、pyquery

  b)         使用某种描述性语言来给我们需要提取的数据定义一个匹配规则,符合这个规则的是数据就会匹配

4、  如何采集动态HTML、验证码的处理

  a)         通用的动态页面采集、Selenium+Phantomjs(无界面):模拟真实浏览器加载js、阿ajax非静态页面数据

  b)         tesseract:机器学习库,机器图像识别系统,可以处理简单的验证码,复杂的验证码可以通过手动输入,打码平台

5、  Scrapy框架(Scrapy,Pyspider)

  高定制性高性能(异步网络框架twisted),所以数据下载速度特别快,提供数据存储、数据下载、提取规则等组件

6、  分布式策略:

  a)         scrapy redis,以scrapy的基础上添加了一套以redis数据库为核心的一台组件

  b)         功能:主要在redis里做请求指纹去重、请求分配、数据临时存储

7、  爬虫、反爬虫、反反爬虫的斗争:

   a)         爬虫最头疼的不是复杂的页面,而是网站后面的另一个人

       反爬虫:user agent、代理、验证码、动态数据加载、加密数据

反爬虫主要还是看数据价值,是否值得去费尽做反爬虫

主要考虑如下方面:机器成本+人力成本》数据价值,就不反了,一般做到封IP就结束了

通用爬虫   聚焦爬虫

1、通用爬虫:搜索引擎用的爬虫系统

-1目标:尽可能把互联网所有的网页下载下来,放到本地服务器里形成备份再对这些网页做相应的处理(提取关键字、去掉广告),最后提供一个用户登录的借口

 

-2抓取流程:

         a、首选选取一部分已有的URL把这些URL放到待爬取队列

         b、从队列中取出这些URL,然后解析DNS得到主机IP,然后去这个IP对应服务器里下载HTML页面,保存到搜索引擎对应的服务器中,之后把这个爬过的URL放入已经爬取队列

         c、分析这些网页内容,找出网页里其他的URL连接,继续执行第二部,直到爬虫条件结束

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

         1、主动向搜索引擎提交网址(百度连接提交)

         2、在其他网站里面设置外链:

         3、搜索引擎会和DNS服务商进行合作,可以快速收录新网站

DNS:就是把域名解析成IP的一种技术

 

-4、通用爬虫并不是万物都可以爬取的,也需要遵守规则

Robots协议:协议会指明通用爬虫可以爬取网页的权限

Robots.txt 只是一个建议,并不是所有爬虫都遵守,只有大型搜索引擎 爬虫需要遵守

 

-5通用爬虫工作流程:爬取网页,存储数据,内容处理,提供索引/排名服务

 

-6、搜索引擎排名:

         a、PageRank:根据网站的流量(点击量/浏览量/人气)统计,流量越高

         b、竞价排名:谁给钱多,谁排名就高

-7、通用爬虫的缺点:

  1、只能提供和文本相关的内容(HTML\WORD\PDF)等等,但是不能提供多媒体、二进制

  2、提供的结果前篇一律,不等针对不同背景领域的人提供不同的搜索结果

  3、不能理解人类语义的检索

 

为了解决这个问题,聚焦爬虫出现了:

聚焦爬虫:爬虫程序员写的针对某种内容爬虫

面向主题爬虫,面向需求爬虫:会针对某种特定的内容去爬取信息,而且会保证信息和需求尽可能相关

HTTP和HTTPS

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

推荐阅读