2015-05-12 python爬虫学习,,开始学习python


开始学习python,在网上找了一个扒糗事百科精华的爬虫,自己稍许的修改了一下,就可以正常的扒拉糗百精华,别人的代码不敢独占,就贴出来分享给大家,废话没有上代码:

#-*-coding:utf-8-*-importurllib2importurllibimportreimportthreadimporttime#-----------加载处理糗事百科-----------classSpider_Model:def__init__(self):self.page=1self.pages=[]self.enable=False#将所有的段子都扣出来,添加到列表中并且返回列表defGetPage(self,page):myUrl="http://www.qiushibaike.com/hot/page/"+pagemyUrl=myUrl+"?s=4771468"user_agent=‘Mozilla/5.0(WindowsNT6.1;rv:37.0)Gecko/20100101Firefox/37.0‘headers={‘User-Agent‘:user_agent}#printmyUrlreq=urllib2.Request(myUrl,headers=headers)myResponse=urllib2.urlopen(req)myPage=myResponse.read()#encode的作用是将unicode编码转换成其他编码的字符串#decode的作用是将其他编码的字符串转换成unicode编码unicodePage=myPage.decode("utf-8")#找出所有class="content"的div标记#re.S是任意匹配模式,也就是.可以匹配换行符myItems=re.findall(‘<div.*?class="content">(.*?)</div>‘,unicodePage,re.S)items=[]foriteminmyItems:#item中是div的内容,也就是糗事百科精华的内容#item中去掉换行items.append(item.replace("\n","").replace("<br/>",""))returnitems#用于加载新的段子defLoadPage(self):#如果用户未输入quit则一直运行whileself.enable:#如果pages数组中的内容小于2个iflen(self.pages)<2:try:#获取新的页面中的段子们myPage=self.GetPage(str(self.page))self.page+=1self.pages.append(myPage)except:print‘无法链接糗事百科!‘else:time.sleep(1)defShowPage(self,nowPage,page):foritemsinnowPage:printu‘第%d页‘%page,itemsmyInput=raw_input()ifmyInput=="quit":self.enable=FalsebreakdefStart(self):self.enable=Truepage=self.pageprintu‘正在加载中请稍候......‘#新建一个线程在后台加载段子并存储thread.start_new_thread(self.LoadPage,())#-----------加载处理糗事百科-----------whileself.enable:#如果self的page数组中存有元素ifself.pages:nowPage=self.pages[0]delself.pages[0]self.ShowPage(nowPage,page)page+=1#-----------程序的入口处-----------printu"""---------------------------------------程序:糗百爬虫版本:0.3原作者:why修改者:天问-中国日期:2015-05-12语言:Python2.7操作:输入quit退出阅读糗事百科功能:按下回车依次浏览今日的糗百热点---------------------------------------"""printu‘请按下回车浏览今日的糗百内容:‘raw_input(‘‘)myModel=Spider_Model()myModel.Start()

原代码作者的注释很清楚了,我就不在啰嗦了。效果图是这样的。

技术分享

2015-05-12 python爬虫学习

相关内容

    暂无相关文章

评论关闭