貼吧小試牛刀

weixin_34075551發表於2018-03-26

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import urllib

import urllib2

def loadPage(url, filename):

    """

        作用:根據url傳送請求,獲取伺服器響應檔案

        url: 需要爬取的url地址

        filename : 處理的檔名

    """

    print "正在下載 " + filename

    headers = {"User-Agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"}

    request = urllib2.Request(url, headers = headers)

    return urllib2.urlopen(request).read()

def writePage(html, filename):

    """

        作用:將html內容寫入到本地

        html:伺服器相應檔案內容

    """

    print "正在儲存 " + filename

    # 檔案寫入

    with open(filename, "w") as f:

        f.write(html)

    print "-" * 30

def tiebaSpider(url, beginPage, endPage):

    """

        作用:貼吧爬蟲排程器,負責組合處理每個頁面的url

        url : 貼吧url的前部分

        beginPage : 起始頁

        endPage : 結束頁

    """

    for page in range(beginPage, endPage + 1):

        pn = (page - 1) * 50

        filename = "第" + str(page) + "頁.html"

        fullurl = url + "&pn=" + str(pn)

        #print fullurl

        html = loadPage(fullurl, filename)

        #print html

        writePage(html, filename)

        print "謝謝使用"

if __name__ == "__main__":

    kw = raw_input("請輸入需要爬取的貼吧名:")

    beginPage = int(raw_input("請輸入起始頁:"))

    endPage = int(raw_input("請輸入結束頁:"))

    url = "http://tieba.baidu.com/f?"

    key = urllib.urlencode({"kw": kw})

    fullurl = url + key

    tiebaSpider(fullurl, beginPage, endPage)

相關文章