python:爬取貼吧的某個吧的網頁資訊
阿新 • • 發佈:2018-12-04
#-*-coding:utf-8-*- import urllib #負責url編碼處理 import urllib2 import sys import os if sys.getdefaultencoding() != 'utf-8': reload(sys) sys.setdefaultencoding('utf-8') def writeFile(html, filename): """ 作用:儲存伺服器響應檔案到本地磁碟檔案裡 html: 伺服器響應檔案 filename: 本地磁碟檔名 """ print "正在儲存" + "D://lianxi" with open("D://lianxi//"+filename.encode("GBK"), 'w') as f: f.write(html) print "-" * 20 def tiebaSpider(url, beginPage, endPage): """filename 作用:負責處理url,分配每個url去傳送請求 url:需要處理的第一個url beginPage: 爬蟲執行的起始頁面 endPage: 爬蟲執行的截止頁面 """ for page in range(beginPage, endPage + 1): pn = (page - 1) * 50 filename = "第" + str(page) + "頁.html" # 組合為完整的 url,並且pn值每次增加50 fullurl = url + "&pn=" + str(pn) #print fullurl # 呼叫loadPage()傳送請求獲取HTML頁面 html = loadPage(fullurl, filename) # 將獲取到的HTML頁面寫入本地磁碟檔案 writeFile(html, filename) def loadPage(url, filename): ''' 作用:根據url傳送請求,獲取伺服器響應檔案 url:需要爬取的url地址 filename: 檔名 ''' print "正在下載" + filename headers = {"User-Agent": "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"} request = urllib2.Request(url, headers = headers) response = urllib2.urlopen(request) return response.read() # 模擬 main 函式 if __name__ == "__main__": kw = raw_input("請輸入需要爬取的貼吧:") # 輸入起始頁和終止頁,str轉成int型別 beginPage = int(raw_input("請輸入起始頁:")) endPage = int(raw_input("請輸入終止頁:")) url = "http://tieba.baidu.com/f?" key = urllib.urlencode({"kw" : kw}) # 組合後的url示例:http://tieba.baidu.com/f?kw=lol url = url + key tiebaSpider(url, beginPage, endPage)
執行過程:
執行結果:
開啟頁面: