2015-05-12 python爬蟲學習

來源:互聯網
上載者:User

標籤:

開始學習python,在網上找了一個扒糗事百科精華的爬蟲,自己稍許的修改了一下,就可以正常的扒拉糗百精華,別人的代碼不敢獨佔,就貼出來分享給大家,廢話沒有上代碼:

# -*- coding: utf-8 -*-     import urllib2  import urllib  import re  import thread  import time    #----------- 載入處理糗事百科 -----------  class Spider_Model:            def __init__(self):          self.page = 1          self.pages = []          self.enable = False        # 將所有的段子都扣出來,添加到列表中並且返回列表      def GetPage(self,page):          myUrl = "http://www.qiushibaike.com/hot/page/" + page        myUrl = myUrl + "?s=4771468"        user_agent = ‘Mozilla/5.0 (Windows NT 6.1; rv:37.0) Gecko/20100101 Firefox/37.0‘         headers = { ‘User-Agent‘ : user_agent }        #print myUrl        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(‘<div.*?class="content">(.*?)</div>‘,unicodePage,re.S)                items = []          for item in myItems:              # item 中是div的內容,也就是糗事百科精華的內容            # item 中去掉換行            items.append(item.replace("\n","").replace("<br/>",""))          return items        # 用於載入新的段子      def LoadPage(self):          # 如果使用者未輸入quit則一直運行          while self.enable:              # 如果pages數組中的內容小於2個              if len(self.pages) < 2:                  try:                      # 擷取新的頁面中的段子們                      myPage = self.GetPage(str(self.page))                      self.page += 1                      self.pages.append(myPage)                  except:                      print ‘無法連結糗事百科!‘              else:                  time.sleep(1)                def ShowPage(self,nowPage,page):          for items in nowPage:              print u‘第%d頁‘ % page , items             myInput = raw_input()              if myInput == "quit":                  self.enable = False                  break                def Start(self):          self.enable = True          page = self.page            print u‘正在載入中請稍候......‘                    # 建立一個線程在後台載入段子並儲存          thread.start_new_thread(self.LoadPage,())                    #----------- 載入處理糗事百科 -----------          while self.enable:              # 如果self的page數組中存有元素              if self.pages:                  nowPage = self.pages[0]                  del self.pages[0]                  self.ShowPage(nowPage,page)                  page += 1      #----------- 程式的入口處 -----------  print u""" ---------------------------------------    程式:糗百爬蟲    版本:0.3    原why   修改者:天問-中國   日期:2015-05-12    語言:Python 2.7    操作:輸入quit退出閱讀糗事百科    功能:按下斷行符號依次瀏覽今日的糗百熱點 --------------------------------------- """    print u‘請按下斷行符號瀏覽今日的糗百內容:‘  raw_input(‘ ‘)  myModel = Spider_Model()  myModel.Start()

 原代碼作者的注釋很清楚了,我就不在囉嗦了。是這樣的。

2015-05-12 python爬蟲學習

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.