作家
登录

设计和实现一款轻量级的爬虫框架

作者: 来源: 2018-01-17 17:31:23 阅读 我要评论

年前最后一场技巧盛宴 | 1月27日与京东、日记易技巧大年夜咖畅聊智能化运维成长趋势!


说起爬虫,大年夜家可以或许想起 Python 里赫赫有名的 Scrapy 框架, 在本文中我们参考这个设计思惟应用 Java 说话来实现一款本身的爬虫框(lun)架(zi)。 我们大年夜起点一步一步分析爬虫框架的出生过程。

总结

我把这个爬虫框架的源码放在 github 上,琅绫擎有几个例子可以运行。

收集爬虫

关于爬虫的一切

下面我们来介绍什么是爬虫?以及爬虫框架的设计和碰到的问题。

“爬虫”不是一只生活在泥土里的小虫子,收集爬虫(web crawler),也叫收集蜘蛛(spider),是一种用来主动浏览收集上内容的机械人。 爬虫拜访网站的过程会消费目标体系资本,很多网站不许可被爬虫抓取(这就是你碰到过的 robots.txt 文件, 这个文件可以请求机械人只对网站的一部分进行索引,或完全不作处理)。 是以在拜访大年夜量页面时,爬虫须要推敲到筹划、负载,还须要讲“礼貌”(从兄弟,慢点)。

互联网上的页面极多,即使是最大年夜的爬虫体系也无法做出完全的索引。是以在公元2000年之前的万维网出现初期,搜刮引擎经常找不到若干相干结不雅。 如今的搜刮引擎在这方面已经进步很多,可以或许即刻给出高质量结不雅。

爬虫框架要推敲什么

既然有人想抓取,就会有人想防御。收集爬虫在运行的过程中会碰到一些阻碍,在业内称之为 反爬虫策略 我们来列出一些常见的。

  • 拜访频率限制
  • Header 头信息校验
  • 动态页面生成
  • IP 地址限制
  • Cookie 限制(或称为登录限制)
  • 验证码限制
  • 等等… 

这些是传统的反爬虫手段,当然将来也会加倍先辈,技巧的改革永远会带动多个行业的成长,毕竟 AI 的时代已经到来, 爬虫和反爬虫的斗争一向持续进行。

设计一款爬虫框架的根本要点在文中已经阐述,要做的更好还有很多细节须要打磨,比瘸愧布式、容错恢复、动态页面抓取等问题。 迎接在 elves 中提交你的看法。

设计我们的框架

我们要设计一款爬虫框架,是基于 Scrapy 的设计思路来完成的,先来看看在没有爬虫框架的时刻我们是若何抓取页面信息的。 一个常见的例子是应用 HttpClient 包或者 Jsoup 来处理,对于一个简单的小爬虫而言这足够了。

下面来演示一段没有爬虫框架的时刻抓取页面的代码,这是我在收集上搜刮的

  1. public class Reptile {   
  2.    public static void main(String[] args) {  
  3.     //传入你所要爬取的页面地址  
  4.     String url1 = "";  
  5.     //创建输入流用于攫取流  
  6.     InputStream is = null;  
  7.     //包装流,加快攫取速度  
  8.     BufferedReader br = null;  
  9.     //用来保存攫取页面的数据.  
  10.     StringBuffer html = new StringBuffer();  
  11.     //创建临时髦符串用于保存每一次读的一行数据,然后html调用append办法写入temp;  
  12.     String temp = "";  
  13.     try {  
  14.         //获取URL;  
  15.         URL url2 = new URL(url1);  
  16.         //打开流,预备开端攫取数据;  
  17.         is = url2.openStream();  
  18.         //将流包装成字符流,调用br.readLine()可以进步攫取效力,每次攫取一行;  
  19.         br= new BufferedReader(new InputStreamReader(is));  
  20.         //攫取数据,调用br.readLine()办法每次攫取一行数据,并赋值给temp,如不雅没数据则值==null,彪炳轮回; 
  21.         while ((
     1/6    1 2 3 4 5 6 下一页 尾页

      推荐阅读

      大神打造水族箱PC主机 机箱还能养鱼

    年前最后一场技巧盛宴 | 1月27日与京东、日记易技巧大年夜咖畅聊智能化运维成长趋势!PC主机重要的散热方法分为风冷和水冷,然则信赖不少玩家据说过“油冷”,就是应用矿物油不导电的特点,将>>>详细阅读


    本文标题:设计和实现一款轻量级的爬虫框架

    地址:http://www.17bianji.com/lsqh/40337.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)