1. 程式人生 > >使用者輸入關鍵字,爬取百度貼吧

使用者輸入關鍵字,爬取百度貼吧

爬取百度貼吧

#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頁
__________________________________________________
謝謝使用

----------------------------------------------------------------------------------------------

出現
*第一頁
*第二頁
*第三頁
則成功