学习imooc网课爬虫实战后,跟着老师一起写了代码,来跟大家分享~
本次爬虫下载器使用urllib2,解析器使用BeautifulSoup.
由于网页的代码会一直变,所以解析的时候也要跟着更新,目前写的解析器适用于最新的~
运行结果在最后面~
话不多说上代码~(我在我认为理解起来有点困难的地方稍微写了一点注释)
(一)主函数:
# -*- coding:utf-8 -*- # Created by lenovo on 2017/2/17. #以一个入口的url来爬取数据 from baike_spider import url_manager,html_downloader,html_parser,html_outputer class SpiderMain(object): def __init__(self): self.urls=url_manager.UrlManager() #创建一个UrlManger类别的对象 self.downloader=html_downloader.HtmlDownloader() # " self.parser=html_parser.HtmlParser() # " self.outputer = html_outputer.HtmlOutputer() # " def craw(self,root_url): count=1 #记录当前爬取的是第几个url self.urls.add_new_url(root_url) #获取待爬取的url while self.urls.has_new_url(): #如果有管理器里面有待爬取的url try: new_url=self.urls.get_new_url() #获取管理器里面有待爬取的url print 'craw %d:%s' %(count,new_url) html_cont=self.downloader.download(new_url) #下载待爬取的url的内容 new_urls,new_data=self.parser.parse(new_url,html_cont) #将下载好的内容传给urls,data两个变量 self.urls.add_new_urls(new_urls) #将该url涉及到的其他urls传入管理器 self.outputer.collect_data(new_data) #将该url涉及到的数据传入输出器 if count==1000: print 'hey' brea