概述
一个完整的爬虫,一般由以下5个组件构成:
1.URL管理器
负责维护待爬取URL队列和已爬取URL队列,必须拥有去重功能。
2.HTML下载器
负责根据调度器从URL管理器中取出的url,下载html页面数据
3.HTML解析器
负责解析HTML下载器下载的网页数据,从中提取新的url和目标数据,并将其返回
4.数据存储器
负责将HTML下载器返回的的数据保存到本地或数据库中
5.调度器
爬虫的核心组件。根据业务流程,调用其它组件完成数据抓取。
一般情况下,爬虫的入口URL在这里提供。
源码
首先,项目结构如下,每个组件使用一个模块文件
1.URL管理器
# !/usr/bin/env python
# -*- coding:utf-8 -*-
class UrlManager(object):
"""URL管理器"""
def __init__(self):
# 待爬去url集合
self.new_urls=set()
# 已爬取url集合
self.old_urls=set()
def new_urls_size(self):
"""获取新的url数量"""
return len(self.new_urls)
def old_urls_size(self):