#!-*- coding:utf-8 -*- 说明: 文件: 1. fetch_and_test.py: 主程序,运行直接用"python ./fetch_and_test.py" 2. settings.py: 待检测的host名,以list存放,可添加其他域名 3. url.log: 链接状态日志,只记录时间、异常链接及status code, 访问较慢标记为timeout fetch_and_test.py: 1.多线程、多队列的方式 队列:url_queue: 待访问url队列 chunk_queue: 待分析页面队列 线程:GrabThread 负责从待访问url队列中每次取出一个url, 测试响应状态, 若可访问,抓取页面,并将页面放置到待分析页面队列 访问异常,按要求记入日志 ChunkThread 负责从待分析页面队列中每次取出一个页面,解析其页面 的所有url, 放入待访问url队列 页面解析:使用了BeautifulSoup库 2.设置超时:防止出现访问时间过长的url阻塞线程 3.url去重:使用了一个字典,将所有访问过的url加入,用其他可以O(1)时间内查找的结构也可 4.url过滤:指向外网站的url不抓取其页面,防止脚本陷入到外网