9

什么是爬虫

爬虫:就是抓取网页数据的程序。搜索引擎的底层其实就是爬虫。
百度百科:网络爬虫

关于Python爬虫,我们需要学习的有:

  1. Python基础语法学习(基础知识)
  2. HTML页面的内容抓取(数据抓取)
  3. HTML页面的数据提取(数据清洗)
  4. Scrapy框架以及scrapy-redis分布式策略(第三方框架)
  5. 爬虫(Spider)、反爬虫(Anti-Spider)、反反爬虫(Anti-Anti-Spider)之间的斗争....

为什么需要爬虫

我们先来考虑一个问题,移动互联网时代已经过去了,你看现在IOS和安卓的行情,现在是大数据时代,那一直在说大数据大数据,那么所谓的"大数据时代",数据获取的方式有哪几种?
百度搜、淘宝买这个是我们一下子可以想到的方式,那么我们统计下都有哪些方式

  1. 企业生产的用户数据:大型互联网公司有海量用户,所以他们积累数据有天然的优势。
    有数据意识的中小型企业,也开始积累的数据。(百度指数 阿里指数 新浪微博指数
  2. 数据管理咨询公司:通常这样的公司有很庞大的数据采集团队,一般会通过市场调研、问卷调查、固定的样本检测,和各行各业的公司进行合作、专家对话(数据积累很多年了,最后得出科研结果)来采集数据。(麦肯锡 艾瑞咨询
  3. 政府/机构提供的公开数据:政府通过各地政府统计上报的数据进行合并;机构都是权威的第三方网站。(中华人民共和国国家统计局数据 世界银行公开数据 联合国数据
  4. 第三方数据平台购买数据:通过各个数据交易平台来购买各行各业需要的数据,根据获取难度不同,价格也会不同。(数据堂 国云数据市场)中国做大数据比较多的一个省就是贵阳,地理优势,贵阳大数据交易所
  5. 爬虫爬取数据:如果市场上没有我们需要的数据,或者价格太高不愿意买,那么就可以招/做一个爬虫工程师,从互联网上定向采集数据。(拉勾网上招聘爬虫工程师

爬虫怎么抓取网页数据

我们平时通过浏览器打开的任意一个网页,其实都有以下三大通用特征

网页三大特征:

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

爬虫的设计思路:

  1. 首先确定需要爬取的网页URL地址。
  2. 通过HTTP/HTTP协议来获取对应的HTML页面。
  3. 提取HTML页面里有用的数据:如果是需要的数据,就保存起来。 如果是页面里的其他URL,那就继续执行第二步

只有Python能搞爬虫?

首先要纠正下,不管是所谓的大数据分析还是爬虫其他编程语言同样可以实现,如 PHP、Java、C/C++、Python等等..

那么为什么我们要选择python来进行实现,我们首先对比下这几个语言

  1. PHP 虽然是世界上最好的语言,但是他天生不是干这个的,而且对多线程、异步支持不够好,并发处理能力很弱,爬虫是工具性程序,对速度和效率要求比较高。
  2. Java 的网络爬虫生态圈也很完善,是Python爬虫最大的对手。但是Java语言本身很笨重,代码量很大。重构成本比较高,任何修改都会导致代码的大量变动。爬虫经常需要修改部分采集代码。
  3. C/C++ 运行效率和性能几乎最强,但是学习成本很高,代码成型比较慢。能用C/C++做爬虫,只能说是能力的表现,但是不是正确的选择,大材小用。
  4. Python 语法优美、代码简洁、开发效率高、支持的模块多,相关的HTTP请求模块和HTML解析模块非常丰富。还有强大的爬虫Scrapy,以及成熟高效的 scrapy-redis分布式策略。而且,调用其他借口也非常方便(胶水语言)

爬虫的分类

根据使用场景:分为 通用爬虫 聚焦爬虫

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

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

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

搜索引擎如何获取一个新网站的URL
1.主动向搜索引擎提交网址:(如百度http://zhanzhang.baidu.com/li...
2.在其他网站里设置网站的外链。
3.搜索引擎会和DNS服务商进行合作,可以快速收录新的网站。(DNS:就是把域名解析成IP的一种技术。)
比如你在cmd pin www.baidu.com就会得到百度的IP,直接在浏览器里面输入IP通用可以访问到百度
图片描述

通用爬虫并不是万物皆可爬,它也需要遵守规则:
Robots协议:协议会指明通用爬虫可以爬取网页的权限。
Robots.txt 只是一个建议。并不是所有爬虫都遵守,一般只有大型的搜索引擎爬虫才会遵守。咱们个人写的爬虫,就不管了。就像公交车上老弱病残孕专座一样。

这里简单介绍下Robots协议(也叫爬虫协议、机器人协议等),全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,例如:
淘宝网:https://www.taobao.com/robots...
腾讯网: http://www.qq.com/robots.txt

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

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

通用爬虫的缺点
1.通用搜索引擎所返回的结果都是网页,而大多情况下,网页里90%的内容对用户来说都是无用的。
2.不同领域、不同背景的用户往往具有不同的检索目的和需求,搜索引擎无法提供针对具体某个用户的搜索结果。
3.万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频、视频多媒体等不同数据大量出现,通用搜索引擎对这些文件无能为力,不能很好地发现和获取。
4.通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询,无法准确理解用户的具体需求。
为了解决这个问题,聚焦爬虫出现了

二、聚焦爬虫:爬虫程序员写的针对某种内容的爬虫。
面向主题爬虫,面向需求爬虫:会针对某种特定的内容去爬取信息,而且会保证信息和需求尽可能相关。而我们后面要学习的,就是聚焦爬虫。

你目前需要掌握爬虫用到的技术

  1. Python的基本语法知识
  2. 如何抓取HTML页面:HTTP请求的处理,urllib、urllib2、requests
  3. 解析服务器响应的内容:re、xpath、BeautifulSoup4(bs4)、jsonpath、pyquery等
  4. 如何采集动态HTML、验证码的处理:通用的动态页面采集:Selenium + PhantomJS(无界面):模拟真实浏览器加载js、ajax等非静态页面数据。Tesseract:机器学习库,机器图像识别系统,可以处理简单的验证码,复杂的验证码可以通过手动输入/专门的打码平台
  5. Scrapy框架:(Scrapy,Pyspider)
  6. 分布式策略 scrapy-reids:
  7. 爬虫 - 反爬虫 - 反反爬虫 之间的斗争(其实这个地方最后肯定是爬虫胜利,因为爬虫只是模拟用户的操作,只要你的网站让用户看,那么爬虫就能爬下来)

离岛
588 声望79 粉丝

引用和评论

0 条评论