zoukankan      html  css  js  c++  java
  • 【设计】【爬虫】针对某一主题做的爬虫,使用Jsoup解析

    作为总结:

    1、这次做了一个非常糟糕的设计:

    我采用了深度优先搜索,当初之所以采用这种方式,是因为我要爬的数据都在搜索树的叶节点上,这样可以在代码中少用一个队列,事实上,这是个烂到家的设计。非叶节点的页面会长时间占着内存。

    一般爬虫会采用广度优先搜索,把要访问的连接保存在一个队列里面,好处:

    A、访问过的页面占用的内存能被回收

    B、速度更快,每个页面只解析一次。(虽然深度优先也是只解析一次,但虚拟机要帮忙维护很多小队列,以保持每个页面解析出来的链接)

    C、容易实现多线程并行爬数据。只要保持对队列的同步,多个线程就可以同时爬数据。

    2、对异常的态度

    A、对待致命错误,要退出程序,不要吸收。

    B、对待非致命异常,吸收异常,程序继续跑。

    这次试验对数据的准确性和完整性要求不高,但由于之前采用了糟糕的设计,所以非常耗时,遇到异常不能停止,否则得重头开始爬数据。

    3、设置连接超时timeout(s)

    在s毫秒内,会不断尝试连接,知道超时

    4、String类的subString()方法

    发现当字符串很长时,subString会爆出异常,这跟java虚拟机对待字符串的方式有关

    5、没有充分了解页面,在做页面模板时,要充分考察不同页面

    另:唯一一点的优点是:

    先对每类页面解析测试后,然后汇总,合在一起。

  • 相关阅读:
    python起航
    【Git】rebase 用法小结
    使用AutoJs编写UI的踩坑记录
    cpu性能消耗分析
    python自动安装依赖模块_python模块管理:如何自动生成和安装requirements.txt依赖...
    Office Tools Plus
    Git 仓库基础操作
    jmeter-阶梯式压测
    JMeter ServerAgent服务器资源监控插件
    Fastjson 从JSON字符串中取值 操作示例
  • 原文地址:https://www.cnblogs.com/549294286/p/2674395.html
Copyright © 2011-2022 走看看