Python實現周期性抓取網頁內容的方法

來源:互聯網
上載者:User
本文執行個體講述了Python實現周期性抓取網頁內容的方法。分享給大家供大家參考,具體如下:

1.使用sched模組可以周期性地執行指定函數

2.在周期性執行指定函數中抓取指定網頁,並解析出想要的網頁內容,代碼中是六維論壇的線上人數

論壇線上人數統計代碼:

#coding=utf-8import time,sched,os,urllib2,re,string#初始化sched模組的scheduler類#第一個參數是一個可以返回時間戳記的函數,第二個參數可以在定時未到達之前阻塞。s = sched.scheduler(time.time,time.sleep)#被周期性調度觸發的函數def event_func():  req = urllib2.Request('http://bt.neu6.edu.cn/')  response = urllib2.urlopen(req)  rawdata = response.read()  response.close()  usernump = re.compile(r'總計 .*? 人線上')  usernummatch = usernump.findall(rawdata)  if usernummatch:    currentnum=usernummatch[0]    currentnum=currentnum[string.index(currentnum,'>')+1:string.rindex(currentnum,'<')]    print "Current Time:",time.strftime('%Y,%m,%d,%H,%M',time.localtime(time.time())),'User num:',currentnum    # 儲存結果,供圖表工具amcharts使用    result=open('liuvUserNUm','a')    result.write('{year: new Date('+time.strftime('%Y,%m,%d,%H,%M',time.localtime(time.time()))+'),value:'+currentnum+'},\n')    result.close()#enter四個參數分別為:間隔事件、優先順序(用於同時間到達的兩個事件同時執行時定序)、被調用觸發的函數,給他的參數(注意:一定要以tuple給如,如果只有一個參數就(xx,))def perform(inc):  s.enter(inc,0,perform,(inc,))  event_func()def mymain(inc=900):  s.enter(0,0,perform,(inc,))  s.run()if __name__ == "__main__":  mymain()

希望本文所述對大家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.