python 爬虫初窥

目录

github下了个crawel入门的python 源码,我fork了一份,研究下看看:
Mini-Spider

代码调用关系:
入口(执行方式):
test_all.sh

1
python3 mini-spider -a http://bbs.fengniao.com/forum/9373824.html jpg html

先由main.py中调用parser.parse_args解析参数,match规则为:

1
2
3
# Add arguments.
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
# Parse analysis url.
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):

  1. 调用init函数解析url及资源类型列表
  2. 调用analysis_url函数下载资源,具体如下:
  • 调用_url_read下载网页
  • 使用python正则表达式查找匹配的资源match = re.findall(i, content)
  • 使用_handle_match处理结果self._handle_match(match_list)
  • 使用_save_temp保存结果

进阶:

Python网络爬虫实战项目代码大全(长期更新,欢迎补充) – Python中文社区 – 知乎专栏

本站总访问量