LZ最近在学习python的相关知识,尤其是爬虫这一块,所以就拿百度百科来练练手,正好网上也有一些资源供借鉴,体会了一把python爬虫的精髓。
一、准备工作
LZ用的是python2.7版本,相对于python 3.0版本,2.7版本目前还是主流。用到了BeautifulSoup、re和urlparse等第三方库。首先将爬虫过程分为五个部分,分别为spider_main.py爬虫调度程序、url_manager.py爬虫URL管理器,维护两个set,一个是为将要爬取信息的url,另一个是已经爬取过的url;html_downloader.py(html下载器)、html_parser.py(html内容解析器)、html_outputer.py结果收集和展示工具。通过以上5个部分的爬取工具,可以实现对某个网页的爬取。
二、爬虫调度程序
spider_main.py
import url_manager
import html_downloader
import html_outputer
import html_parser
class SpiderMain(object):
# 初始各个对象, 其中UrlManager、HtmlDownloader、HtmlParser、HtmlOutputer四个对象需要之后创建
def __init__(self): #这个是此类的初始化方法
self.urls = url_manager.UrlManager() # URL管理器
self.downloader = html_downloader.HtmlDownloader() # 下载器
self.parser = html_parser.HtmlParser() # 解析器
self.outputer = html_outputer.HtmlOutputer() # 输出器
def craw(self, root_url):
count = 1 #用来记录爬取过的url
# 将root_url添加到url管理器
self.urls.add_new_url(root_url)
# 只要添加的url里有新的url
while self.urls.has_new_url():
try:
new_url = self.urls.get_new_url()
print 'craw %d : %s' % (count, new_url)