爬虫怎么抓取网页数据:

网页的三大特征

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

爬虫的设计思路

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

为什么选择Python做爬虫?

可以做爬虫的语言有很多 ,如PHP JAVA C/C++

PHP主要是做web前端网页,而且对多线程,异步网络支持不够好,并发处理能力很弱,爬虫是工具性程序,对速度和效率要求比较高

JAVA的网络爬虫生态圈也很完善,是python爬虫最大的对手,但是java语言本身很笨重,代码量很大.重构成本很高,任何修改都会导致代码的大量变动.爬虫经常需要修改部分内容

C/C++运行效率和性能几乎最强,但是学习成本很高.代码成型比较慢,能用C/C++做爬虫只能说是能力的表现,但是不是正确的选择

Python:语法优美,代码简介,开发效率高,支持的模块多,相关的HTTP请求模块和HTML解析模块非常丰富,还有强大的爬虫框架Scrapy,以及成熟高效的Scrapy redis 分布式策略.而且,调用其它接口也非常方便(胶水语言)

需要的学习技能

  1. Python的基本语法知识
  2. 如何抓取HTML页面   http请求处理urllib,urllib2,requests   处理后的请求可以模拟浏览器发送请求,获取服务器响应的文件
  3. 解析响应页面的内容   re,xpath,beautifulSoup4,jsonpath,pyquery等 使用某种描述性一样来给我们需要提取的数据定义一个匹配规则,符合这个规则的数据就会被匹配
  4. 如何采集动态HTML,验证码的处理  通用的动态页面采集:Selenium(自动化测试)+PhantomJS(无界面浏览器):模拟真实浏览器加载JSajax非静态页面数据采集   Tesseract:机器学习库 ,机器图像识别系统,可以处理简单的验证码,复杂的验证码可以通过手动输入或者专门的打码平台
  5. Scrapy框架:    高定制性,高性能(异步网络框架twisted),所以数据下载速度非常快,提供了数据存储,数据下载,提取规则等组件.
  6. 分布式策略:     scrapy redis,在Scrapy基础以Redis数据库为核心一套组件,让Scrapy框架支持分布的功能,主要在Redis里做请求指纹去重,请求分配,数据临时存储
  7. 爬虫   反爬虫 反反爬虫之间的斗争     爬虫做到最后,最头痛的不是复杂的页面,也不是晦涩的数据,而是网站另一边的反爬虫人员    

           反爬虫机制:User Agent,代理,验证码,动态数据加载,数据加密  

           爬虫和反爬虫之间的斗争,最后一定是爬虫技术

根据使用场景分类:

通用爬虫

  1. 通用爬虫:通用搜索引擎爬虫
  2. 目标:就是把互联网上所有网页下载下来,放到本地服务器形成备份,在对这些网页做相关处理(提取关键字,去掉广告),最后提供一个用户接口
  3. 抓取流程: a首先选取一部分已有的URL,把这些URL放到待爬取队列   b 从队列里取出这些URL,然后解析DNS得到主机IP,然后去IP对应的服务器里下载HTML页面,保存到搜索引擎服务器,之后把这个爬过的url放入已爬取队列  c 分析这些网页内容,找出网页里其他的url连接,裂解执行第二步,直到爬取结束
  4. 搜索引擎是如何获取一个新网站的URL:a 主动向搜索引擎提交网址  b 在其它网站设置网站的外链  c 搜索引擎回合DNS服务商进行合作,可以快速收录新的网站
  5. 通用爬虫并不是万物皆可爬,他也需要遵守规则 Robots协议:协议会指明爬虫可以爬取网页的权限
  6. Robots.txt并不是所有爬虫都遵守,一般只有大型搜索引擎爬虫遵守  个人爬虫可以不遵守
  7. 通用爬虫的工作流程:爬取网页 存储数据  内容处理 提供检索排名服务
  8. 搜索引擎排名:   a.PageRank值:根据网站的流量(点击量/浏览量/人气)统计,流量越高,排名越靠前,网站越值钱 b.竞价排名:谁给钱多,谁排名就高.
  9. 通用爬虫的缺点:a 只能提供和文本相关的内容(html,word,pdf)等等,但是不能提供多媒体(音乐,视频图片)和二进制文件(程序,脚本)  b.提供的结果千篇一律,不能针对不同背景领域的人提供不同的搜索结果  c 不能理解人类与以上的检索

(DNS:就是把域名解析成IP)

聚焦爬虫(为了解决通用爬虫缺点)

  1. 聚焦爬虫:爬虫程序员写的针对某种内容爬虫
  2. 面向主题爬虫,面向需求爬虫,会针对某种特定的内容区爬取信息,而且保证信息和内容需求相关

HTTP和HTTPS

HTTP:是一种发布和接收HTML页面的方法  端口号  80

HTTPS:简单的僵尸HTTP的安全版,在HTTP下加入SSL层  端口号为443

SSL 主要用于web的安全传输协议,在传输层对网络连接进行加密,保证在Internet上的数据传输的安全

HTTP请求主要是GET请求(请求数据会出现url中) POST请求(请求数据会保存在form表单中)