python爬虫需要mysql_Python爬虫与mysql

#-*- coding: utf-8 -*-

importurllib2importurllibimportreimportthreadimporttime#----------- 加载处理糗事百科 -----------

classSpider_Model:def __init__(self):

self.page= 1self.count= 1self.pages=[]

self.enable=False#将所有的段子都扣出来,添加到列表中并且返回列表

defGetPage(self,page):

myUrl= "http://m.qiushibaike.com/hot/page/" +page

user_agent= 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'headers= { 'User-Agent': user_agent }

req= 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('

.*?
',unicodePage,re.S)

myItems = re.findall('

\n*(.*?)<.>\n*
',unicodePage,re.S)

items=[]for item inmyItems:#去掉段子中网页相关的内容

#strinfo = re.compile(u'<.>')

#tt = strinfo.sub(u'', item)

#strinfo1 = re.compile(u'^\n*')

#tt = strinfo1.sub(u'', tt)

#strinfo2 = re.compile(u'\n*$')

#tt = strinfo2.sub(u'', tt)

#tt = tt.replace(u'\n',u'')

items.append(item)returnitems#用于加载新的段子

defLoadPage(self):#如果用户未输入quit则一直运行

whileself.enable:#如果pages数组中的内容小于2个

if len(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):for items innowPage:print u'第%d条\n' %self.count , items

self.count+= 1myInput=raw_input()if myInput == "q":

self.enable=Falsebreak

defStart(self):

self.enable=True

page=self.pageprint u'......正在搜索中......\n'

#新建一个线程在后台加载段子并存储

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

#----------- 程序的入口处 -----------

print u"""---------------------------------------

程序:糗百爬虫

版本:1.0

作者:zz

日期:2016-02-16

语言:Python 2.5

操作:输入'q'退出阅读糗事百科

功能:按下回车依次浏览今日的糗百热点

---------------------------------------"""

print u'请按下回车浏览今日的糗百内容:'raw_input(' ')

myModel=Spider_Model()

myModel.Start()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值