【设计】【爬虫】针对某一主题做的爬虫,使用Jsoup解析

本文分享了作者在爬虫项目中的实践经验,包括选择搜索算法的重要性、如何正确处理异常、设置连接超时、使用String类的方法注意事项及页面模板制作的经验。强调了广度优先搜索在爬虫中的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作为总结:

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

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

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

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

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

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

 

2、对异常的态度

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

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

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

 

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

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

 

4、String类的subString()方法

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

 

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

 

另:唯一一点的优点是:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值