• Java爬虫搜索原理实现


    permike 原文 Java爬虫搜索原理实现

    没事做,又研究了一下爬虫搜索,两三天时间总算是把原理闹的差不多了,基本实现了爬虫搜索的原理,本次实现还是俩程序,分别是按广度优先和深度优先完成的,广度优先没啥问题,深度优先请慎用,有极大的概率会造成死循环情况,下面深度优先的测试网站就造成了死循环。。。。好吧,我承认是我人品不太好。。。下面有请代码君出场~~~~~~~~~~~~~~~

    1.广度优先

     

    [java] view plaincopy
     
    1. /** 
    2.  * 完成广度优先搜索 
    3.  */ package import import import import import import import import import import import /** 
    4.  * @author 魏诗尧 
    5.  * @version 1.8 
    6.  * @emali inwsy@hotmail.com 
    7.  */ publicclass   
    8. privatevoid   
    9. null   
    10. null   
    11. null try   
    12. new   
    13.   
    14.   
    15. new bytenewbyte1024 int;  
    16.   
    17. while)) != -) {  
    18. , len);  
    19.   
    20. new);  
    21. catch );  
    22. finally try   
    23. ifnull ifnull catch   
    24. privatevoid   
    25. null null null try   
    26. newtrue new);  
    27. newnew   
    28. whilenull   
    29.   
    30.   
    31. while );  
    32.   
    33. if) {  
    34. continue if) == ) {  
    35. continue if)) {  
    36. continue if) != -) {  
    37. continue if) != -) {  
    38. continue if)) {  
    39. continue   
    40.   
    41. );  
    42. catch );  
    43. finally   
    44. try ifnull ifnull ifnull catch   
    45. privatevoid   
    46. null null try   
    47. new);  
    48. newnew   
    49. new   
    50. whilenull   
    51. );  
    52. catch finally try   
    53. ifnull ifnull catch publicstaticvoidthrows   
    54. new);  
    55.   
    56. new }  

    上面广度优先没啥问题,本人昨天凌晨3点多做的测试,15分钟左右的时间,这只小爬虫爬到了30W+的链接,能力还是蛮强大的么,顺便提一下,白天测试的时候会非常非常的慢,推荐各位测试君在晚上12点以后做测试。。。。。虽然不太人道。。。

     

    下面是深度优先的代码,测试的时候每次都能造成死循环。。。好吧,我承认我没有人品。。。其实基本方法和广度优先没啥区别,我每个页面爬出来的链接只拿第一个去爬下一个页面,总共爬多少层我懒的木有定义,就是想看看最多能爬到哪。。。然后每次都能悲剧的死循环了。。。我明明也设置了跳出的方法了啊,我有判断有效链接的方式,但是我的判断并不完善么,跳出方法我写到了catch中,只要有一个无效链接,就可以跳出来了么。。。今天凌晨全都是死循环。。。。无奈了。。。。下面请代码君上场~~~~~~~~~~


     

    [java] view plaincopy
     
    1. /** 
    2.  * 完成深度优先搜索 
    3.  * 爬虫进行深度优先很有可能会出现死循环的情况 
    4.  */ package import import import import import import import import import import import import import /** 
    5.  * @author 魏诗尧 
    6.  * @version 1.8 
    7.  * @emali inwsy@hotmail.com 
    8.  */ publicclass   
    9. privatestaticnew   
    10. privatevoid   
    11. null   
    12. null   
    13. null try   
    14. new   
    15.   
    16.   
    17. new bytenewbyte1024 int;  
    18.   
    19. while)) != -) {  
    20. , len);  
    21. new);  
    22. catch );  
    23. finally try   
    24. ifnull ifnull catch   
    25. privatevoid   
    26. null null try   
    27. new);  
    28. newnew   
    29. whilenull   
    30.   
    31.   
    32. while );  
    33.   
    34. if) {  
    35. continue if) == ) {  
    36. continue if)) {  
    37. continue if) != -) {  
    38. continue if) != -) {  
    39. continue if)) {  
    40. continue   
    41.   
    42. whilenull new);  
    43. break catch );  
    44. new finally   
    45. try ifnull ifnull catch publicvoid null try   
    46. newtrue   
    47. while );  
    48. catch );  
    49. finally try ifnull catch publicstaticvoid new);  
    50. new }  

    上面这两篇代码本身是十分不完善的,时间原因,我基本只实现了最基本的原理,能改动增加的地方还有很多,主要是增加,很多地方都可增加代码来增强程序的健壮性。。。比如有效链接判断的地方,我们从href标签中取出来的内容除了我写的几条判断意外还有好多东西都没有处理掉,这个地方还是能增加很多东西的。。。
  • 相关阅读:
    通用工业协议(CIP)形式化的安全分析(前期概念的梳理)
    WEB安全工程师整理资料
    AWVS (Acunetix Web Vulnerability Scanner )
    Java Decompiler反编译Jar文件
    信息安全面试题整理
    工业网络安全 智能电网,SCADA和其他工业控制系统等关键基础设施的网络安全(总结)
    PLC编程的基础知识的总结
    协议安全分析方法的综述
    The Essential Burp Suite
    kali linux 虚拟机克隆之后版本回退问题
  • 原文地址:https://www.cnblogs.com/arxive/p/6194372.html
Copyright © 2020-2023  润新知