使用者輸入關鍵字,爬取百度貼吧
阿新 • • 發佈:2018-11-20
爬取百度貼吧
#coding=utf-8 import urllib2 import urllib def loadPage(url, filename): ''' 作用:根據url傳送請求, 獲取伺服器響應檔案 url:需要爬取的url地址 filename:處理檔名 ''' head = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'} print '正在下載' + filename request = urllib2.Request(url, headers=head) return urllib2.urlopen(request).read() def writePage(html, filename): ''' 作用:將html檔案內容寫入檔案 html:伺服器響應檔案 filename:檔名 ''' print '正在儲存' + filename with open(filename, 'w') as f: f.write(html) print '_' * 50 def tiebaSpider(url, beginPage, endinPage): ''' 作用:貼吧爬蟲排程器,負責組合處理每個頁面的url url:貼吧url的前半部分 beginPage:起始頁 endinPage:結束頁 ''' for page in range(beginPage, endinPage + 1): filename = '第' + str(page) + '頁' pn = (page - 1) * 50 fullurl = url + '&pn=' + str(pn) # print fullurl html = loadPage(fullurl, filename) writePage(html, filename) print '謝謝使用' if __name__ == '__main__': kw = raw_input('請輸入需要爬取的貼吧名:\n') beginPage = int(raw_input('請輸入起始頁')) endinPage = int(raw_input('請輸入結束頁')) url = 'http://tieba.baidu.com/f?' key = urllib.urlencode({'kw': kw}) fullurl = url + key tiebaSpider(fullurl, beginPage, endinPage) -----------------------results of enforcement----------------------------------------- 請輸入需要爬取的貼吧名: python 請輸入起始頁1 請輸入結束頁3 正在下載第1頁 正在儲存第1頁 __________________________________________________ 正在下載第2頁 正在儲存第2頁 __________________________________________________ 正在下載第3頁 正在儲存第3頁 __________________________________________________ 謝謝使用 ----------------------------------------------------------------------------------------------
出現
*第一頁
*第二頁
*第三頁
則成功