【基础爬虫篇】
本篇讲解一个比较简单的Python爬虫。
这个爬虫虽然简单,但五脏俱全,大爬虫有的模块这个基础爬虫都有,只不过大爬虫做的更全面、多样。
1.实现的功能:这个爬虫实现的功能为爬取百度百科中的词条信息。爬取的结果见6。
2.背景知识:(1).Python语法;(2).BeautifulSoup;(3).HTML知识;
Python基础语法学习可参看:推荐《Python编程——从入门到实践》,或者廖雪峰Python博客。
BeautifulSoup主要语法可参看:BeautifulSoup主要知识点
3.基础爬虫框架及运行流程:
基础爬虫包括五个模块,分别是爬虫调度器,URL管理器,HTML下载器,HTML解析器,数据存储器。
功能分析如下:
(1).爬虫调度器主要负责统筹其他四个模块的协调工作;
(2).URL管理器负责管理URL链接,维护已经爬取的URL集合和未爬取的URL集合,提供获取新URL链接的接口;
(3).HTML下载器用于从URL管理器中获取未爬取的URL链接并下载HTML网页;
(4).HTML解析器用于从HTML下载器中获取已经下载的HTML网页,并从中解析出新的URL链接交给URL管理器,解析出有效数据交给数据存储器。
(5).数据存储器用于将HTML解析器解析出来的数据通过文件或者数据库的形式解析出来。
文件组织目录:
其中__init__.py的内容为空,它的作用简单说就是让这个包变成一个模块,身份发生了变化。
1.URL管理器
链接去重复在Python爬虫开发中是必备的技能,解决方案主要有三种:1).内存去重;2).关系数据库去重;3).缓存数据库去重;在这个基础爬虫中,我使用了Python中的set这种内存去重方式,因为数据量比较少。
# url管理器
class UrlManager(object):
def __init__(self):
self.new_urls = set()
self.old_urls = set()
def has_new_url(self):
'''
判断是否有未爬取的URL
:return:
'''