“大数据时代” 数据获取方式
爬虫爬取数据
爬虫介绍
爬虫按照场景分为两种,通用爬虫和聚焦爬虫
通用爬虫
通用爬虫即搜索引擎用的爬虫系统,如百度,谷歌
1.尽可能把互联网上所有的网页下载下来,放到本地服务器里形成备份,再对这些网页做相关的处理(提取关键字,去掉广告),最后提供一个用户检索的窗口;
2.抓取流程
首先选取一部分已有的URL,把这些URL放到爬取队列;
从队列里取出这些URL,然后解析DNS得到主机IP;然后去这个IP对应的服务器里下载HTML页面,保存到搜索引擎对应的数据;之后把这个爬过的URL放入已爬取队列。
分析网页内容,找出网页里其他的URL连接,继续执行第二步,直到爬取条件结束;
3.搜索引擎如何获取一个新网站的URL
1.主动向搜索引擎提交网址: [百度搜索资源平台](https://ziyuan.baidu.com/)
2.在其他网站里设置外链
3.搜索引擎会和DNS服务商进行合作,可以快速收录新的网站
4.通用爬虫并不是万物皆可爬,它也需要遵守规则:
Robots协议: 协议会指明通用爬虫可以爬取网页的权限
Robots.txt 只是一个建议,并不是所有爬虫都遵守,一般只有大型的搜索引擎爬虫才会遵守,个人爬虫可以不管;
5.通用爬虫工作流程: 爬去网页 –> 存储数据 –>内容处理–>提供检索/排名服务
6.收索引擎排名
1.PageRank(流量越高,越值钱)
2.竞价排名,谁给钱多,谁排名就高
7.通用爬虫的缺点:
只能提供文本信息,但不能提供多媒体文件(音乐,视频)
提供的结果千篇一律,不能针对不同背景领域的人提供不同的搜索结果
不能理解人类语义
聚焦爬虫
聚焦爬虫指的就是程序员写的针对某些内容的爬虫
网页三大特征
每个网页都有自己的URL(同一资源定位符)来进行定位
网页都是用HTML(超文本标记语言)来描述页面信息
网页都使用HTTP/HTTPS(超文本传输协议)来传输HTML数据
爬虫的思路
- 首先确定爬取的网页URL地址
- 通过HTTP/HTTP协议来获取对应的HTML页面
- 提取HTML页面有用的数据,如果是页面的其他URL,那就继续执行第二步
常见步骤:
- HTTP请求的处理,urllib,urllib2,requests,处理后的请求可以模拟浏览器请求,获取服务器响应的文件
- 通过动态页面采集: Selenium+PhantomJS(无界面):模拟真实浏览器加载js,ajax等非静态页面数据
- Tesseract: 机器学习库,机器图像识别系统,可以处理简单验证码,复杂的验证码可以通过手动输入
- 保存数据 re,xpath,BeautifulSoup4(bs4),jsonpath,pyquery等 使用某种描述性一样来给我们需要提取的数据定义一个匹配规则,符合这个规则的数据就会被匹配,如果是需要的数据,就保存起来
爬虫框架
Scrapy,Pyspider
高定制性高性能(异步网络框架twisted),所以数据下载熟读非常快,提供了数据下载,数据存储,数据下载,提取规则
分布式策略
scrapy redis,在scrapy的基础上添加了以redis数据库为核心的一套组件,让scrapy框架支持分布式的功能,主要是Redis里做指纹去重,请求分配,数据临时存储
结语
爬虫 反爬虫 反反爬虫之间的斗争
其实爬虫做到最后,最头疼的不是负杂的页面,也不是晦涩的数据,而是网站另外一头的运维人员
反爬虫: User Agent,代理,验证码,动态数据加载,加密数据