当前位置:Gxlcms > 数据库问题 > Python爬虫与mysql

Python爬虫与mysql

时间:2021-07-01 10:21:17 帮助过:2人阅读

# -*- coding: utf-8 -*- 2 3 import urllib2 4 import urllib 5 import re 6 import thread 7 import time 8 9 10 #----------- 加载处理糗事百科 ----------- 11 class Spider_Model: 12 13 def __init__(self): 14 self.page = 1 15 self.count = 1 16 self.pages = [] 17 self.enable = False 18 19 # 将所有的段子都扣出来,添加到列表中并且返回列表 20 def GetPage(self,page): 21 myUrl = "http://m.qiushibaike.com/hot/page/" + page 22 user_agent = Mozilla/4.0 (compatible; MSIE 5.5; Windows NT) 23 headers = { User-Agent : user_agent } 24 req = urllib2.Request(myUrl, headers = headers) 25 myResponse = urllib2.urlopen(req) 26 myPage = myResponse.read() 27 #encode的作用是将unicode编码转换成其他编码的字符串 28 #decode的作用是将其他编码的字符串转换成unicode编码 29 unicodePage = myPage.decode("utf-8") 30 31 # 找出所有class="content"的div标记 32 #re.S是任意匹配模式,也就是.可以匹配换行符 33 myItems = re.findall(<div class="content">.*?</div>,unicodePage,re.S) 34 items = [] 35 for item in myItems: 36 #去掉段子中网页相关的内容 37 strinfo = re.compile(u<.*?>) 38 tt = strinfo.sub(u‘‘, item) 39 40 #strinfo1 = re.compile(u‘^\n*‘) 41 #tt = strinfo1.sub(u‘‘, tt) 42 43 #strinfo2 = re.compile(u‘\n*$‘) 44 #tt = strinfo2.sub(u‘‘, tt) 45 tt = tt.replace(u\n,u‘‘) 46 47 48 items.append(tt) 49 return items 50 51 # 用于加载新的段子 52 def LoadPage(self): 53 # 如果用户未输入quit则一直运行 54 while self.enable: 55 # 如果pages数组中的内容小于2个 56 if len(self.pages) < 2: 57 try: 58 # 获取新的页面中的段子们 59 myPage = self.GetPage(str(self.page)) 60 self.page += 1 61 self.pages.append(myPage) 62 except: 63 print 无法链接糗事百科! 64 else: 65 time.sleep(1) 66 67 def ShowPage(self,nowPage,page): 68 for items in nowPage: 69 print u第%d条\n % self.count , items 70 self.count += 1 71 myInput = raw_input() 72 if myInput == "q": 73 self.enable = False 74 break 75 76 def Start(self): 77 self.enable = True 78 page = self.page 79 80 print u......正在搜索中......\n 81 82 # 新建一个线程在后台加载段子并存储 83 thread.start_new_thread(self.LoadPage,()) 84 85 #----------- 加载处理糗事百科 ----------- 86 while self.enable: 87 # 如果self的page数组中存有元素 88 if self.pages: 89 nowPage = self.pages[0] 90 del self.pages[0] 91 self.ShowPage(nowPage,page) 92 page += 1 93 94 95 #----------- 程序的入口处 ----------- 96 print u""" 97 --------------------------------------- 98 程序:糗百爬虫 99 版本:1.0 100 作者:zz 101 日期:2016-02-16 102 语言:Python 2.5 103 操作:输入‘q‘退出阅读糗事百科 104 功能:按下回车依次浏览今日的糗百热点 105 --------------------------------------- 106 """ 107 108 109 print u请按下回车浏览今日的糗百内容: 110 raw_input( ) 111 myModel = Spider_Model() 112 myModel.Start() View Code

 

运行效果如下:

技术分享

Python爬虫与mysql

标签:

人气教程排行