作家
登录

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

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

temp = br.readLine()) != null) {  
  •             //将temp的值追加给html,这里留意的时String跟StringBuffere的差别前者不是可变的后者是可变的;  
  •             html.append(temp);  
  •         }  
  •         //接下来是封闭流,防止资本的浪费;  
  •         if(is != null) {  
  •             is.close();  
  •             is = null;  
  •         }  
  •         //经由过程Jsoup解析页面,生成一个document对象;  
  •         Document doc = Jsoup.parse(html.toString());  
  •         //经由过程class的名字获得(即XX),一个数组对象Elements琅绫擎有我们想要的数据,至于这个div的值呢你打开浏览器按下F12就知道了;  
  •         Elements elements = doc.getElementsByClass("XX");  
  •         for (Element element : elements) {  
  •         //打印出每一个节点的信息;你可以选择性的保存你想要的数据,一般都是获取个固定的索引;  
  •             System.out.println(element.text());  
  •         }  
  •     } catch (MalformedURLException e) {  
  •         e.printStackTrace();  
  •     } catch (IOException e) {  
  •         e.printStackTrace();  
  •     }     
  • }  
  • 大年夜如斯丰富的注释中我感触感染到了作者的耐烦,我们来分析一下这个爬虫在干什么?

    1. 输入一个要爬取的URL地址
    2. 经由过程 JDK 原生 API 发送收集请求获取页面信息(这琅绫腔有应用 HttpClient)
    3. 应用 Jsoup 解析 DOM
    4. 处理本身须要的数据
    5. 将它们输出在控制台 

    大年夜概就是如许的步调,代码也异常简洁,我们设计框架的目标是将这些流程同一化,把通用的功能进行抽象,削减反复工作。 还有一些没推敲到的身分添加进去,那么设计爬虫框架要有哪些构成呢?

    1. URL治理
    2. 网页下载器
    3. 爬虫调剂器
    4. 网页解析器
    5. 数据处理器 

    分别来解释一下每个构成的感化是什么。

    URL治理器

    爬虫框架要处理很多的URL,我们须要设计一个队列存储所有要处理的URL,这种先辈先出的数据构造异常相符这个需求。 将所有要下载的URL存储在待处理队列中,每次下载会掏出一个,队列中就会少一个。我们知道有些URL的下载会有反爬虫策略, 所以针对这些请求须要做一些特别的设置,进而可以对URL进行封装抽出 Request。

    网页下载器

    在前面的简单例子中可以看出,如不雅没有网页下载器,用户就要编写收集请求的处理代码,这无疑对每个URL都是雷同的动作。 所以在框架设计中我们直接参加它就好了,至于应用什么库来进行下载都是可以的,你可以用 httpclient 也可以用 okhttp, 在本文中我们应用一个超轻量级的收集请求库 oh-my-request (没错,就是鄙人搞的)。 优良的框架设计会将这个下载组件置为可调换,供给默认的即可。

    爬虫调剂器

    调剂器和我们在开辟 web 应用中的┞菲握器是一个类似的概念,它用于鄙人载器、解析器之间做流转处理。 解析器可以解析到更多的URL发送给调剂器,调剂器再次的传输给下载器,如许就会让各个组件有条不紊的进行工作。

    什么是爬虫?

    网页解析器

    我们知道当一个页面下载完成后就是一段 HTML 的 DOM 字符串表示,但还须要提掏出真正须要的数据, 以前的做法是经由过程 String 的 API 或者正则表达式的方法在 DOM 中搜寻,如许是很麻烦的,框架 应当供给一种合理、常用、便利的方法来赞助用户完成提取数据这件事儿。常用的手段是经由过程 xpath 或者 css 选择器大年夜 DOM 中进行提取,并且进修这项技能在几乎所有的爬虫框架中都是实用的。


      推荐阅读

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

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


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

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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