一个完整的爬虫需要有以下几个部分组成:
一、网页下载器,既然是爬取网上的,就需要有一个抓取一个个网页的的工具,这就是网页下载器,有很多Python包都提供了相应功能,比如下面实例中的urllib2工具包。
二、网页解析器,当我们爬去下来一个个页面的时候,其实就是一些HTML代码包裹起来一些数据,比如文字,图片等,要想获取这些数据,就需要解析这些网页啦,这就是网页解析器的作用。另外,这也是爬虫最难的一部分,因为需要解析各种不同情况的标签,还要大量用到正则表达式,但是也有一些包比如Beautiful Soup帮助我们简化工作,想进一步学习可以参考:
https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html
三、URL管理器,由于我们的爬虫一次需要爬取很多页面,这就需要保存起来已经爬到的页面,以供网页解析器来解读这些页面,也可以防止重复抓取页面和剔除无效的URL链接。
四、爬虫调度器,顾名思义就是管理整个爬虫,使我们的爬虫按流程工作。
#url管理器
# coding:utf8
class UrlManager(object):
def __init__(self):
# 初始化待爬取url集合和已爬取url集合
self.new_urls = set()
self.old_urls = set()
# 添加一个新的url到new_urls