github下了个crawel入门的python 源码,我fork了一份,研究下看看:
Mini-Spider
代码调用关系:
入口(执行方式):
test_all.sh
1
| python3 mini-spider -a http:
|
先由main.py中调用parser.parse_args解析参数,match规则为:
1 2 3
| analysis_help = 'Analysis a URL.' parser.add_argument('-a', help=analysis_help, nargs='+', dest='analysis_url', metavar='[URL]')
|
进一步调用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| if args.analysis_url: if len(args.analysis_url) == 1: print('Error: Please input what resource you are looking for!') return False timeout = 2.0 if args.time_out: timeout = args.time_out[0] if args.similarity: spider = MiniSpider(args.analysis_url[0], search=args.analysis_url[1:], similarity_threshold=args.similarity[0], timeout=timeout) spider.analysis_url() else: spider = MiniSpider(args.analysis_url[0], search=args.analysis_url[1:], similarity_threshold=0.6, timeout=timeout) spider.analysis_url()
|
解析args
最后调用spider.analysis_url做实际性的工作(解析url并获取资源).
来看下MiniSpider这个类(scheduler.py):
- 调用init函数解析url及资源类型列表
- 调用analysis_url函数下载资源,具体如下:
- 调用_url_read下载网页
- 使用python正则表达式查找匹配的资源
match = re.findall(i, content)
- 使用_handle_match处理结果
self._handle_match(match_list)
- 使用_save_temp保存结果
进阶:
Python网络爬虫实战项目代码大全(长期更新,欢迎补充) – Python中文社区 – 知乎专栏