@author: 张海旭 Email: 1101549736@qq.com 题目要求: 请设计一个系统,自动完成对于手机搜狐(http://m.sohu.com/)系统可靠性的检测。具体要求:
- 递归检测所有m.sohu.com域名的页面以及这些页面上的链接的可达性,即有没有出现不可访问情况。
- m.sohu.com域名页面很多,从各个方面考虑性能优化。
- 对于错误的链接记录到日志中,日志包括:URL,时间,错误状态等。 要求:不使用框架。 加分项:使用并发方式实现。 解决思路: 建立两个set,new_urls中存待检测链接,old_urls中存已检测链接。使用Python写网页爬虫抓取手机搜狐(http://m.sohu.com/ )页面上的所有链接存入new_urls,然后递归检测子页面上所有链接也存入new_urls。每次从new_urls中pop一条链接add到old_urls,即将检测完的链接存入old_urls。重复直到new_urls中没有链接。避免链接之间相互指向,每次抓取到新的链接时,要对链接进行筛选,只有之前未检测过且不在filterurl中的链接可以加入到new_urls。将错误链接记录信息存到日志log.txt中。程序采用多线程进行加速。虽然Python多线程有点鸡肋,但是处理IO密集型任务效果还是可以的。