単純なデータBaiduのポストバーのPythonのクロール爬虫類

まず、urllibは下の要求とurllibは下のランダムなパッケージをパッケージ化時間を使用して解析された最初のライブラリがあります

その後、我々は、クロールするための情報BaiduSpiderという名前のクラスを定義します

 

URLを属性:クロールのURLヘッダ:リクエストヘッダ

クラスBaiduSpider(オブジェクト):
     デフ __init__ (自己):
        self.url = ' http://tieba.baidu.com/f?kw= {}&PN = {} ' 
        self.headers = { ' のUser-Agent '' Win7の:Mozillaの/ 5.0(Windows NTの6.1; WOW64)のAppleWebKit / 535.1(KHTML、ヤモリなど)クローム/ 14.0.835.163 Safariの/ 535.1 " }

 

その後、我々はデータを掃除含まない3つのメソッドを定義します

ページを取得します

1つの #は、ページ取得
2      DEF get_page(セルフ、URL)を:
 3つの         #は要求されたオブジェクトを定義する
。4          REQ = request.Request(URL = URL、ヘッダー= self.headers)
 5。          開始要求を
6。          RESの=のrequest.urlopen(REQ)
 7。          対応するオブジェクトを取得する
。図8は、          HTML res.read =()。デコード(' UTF-8を'' 無視' 。9          リターン HTMLを

セーブデータ

保存データ
    DEFのwrite_page(セルフ、ファイル名、HTML):
        ローカルへの保存データ 
        のオープンと(ファイル名、' W '、エンコード= ' UTF-8。' )F AS:
            f.write(HTML)

主な機能

主な機能
    DEF メイン(セルフ):
        名前 = INPUT(' 名前が貼り付けてください:>>>> ' 
        スタート = INT(INPUT(' ホームを入力' ))
        エンド = INT(INPUT(" 入力終了P ' ))
         のためのページの中でできる範囲(スタート、エンド+ 1 ):
            スプライシングされたURLアドレス' http://tieba.baidu.com/f?kw PN = {} {}&」
            中国の文字エンコーディングのURLをエンコードしますアドレスコード 
            キロワット= parse.quote(名前)
             #は、現在のページを取得する 
            PN =(1ページ)* 50 #のURLのスプライシングアドレス
            
            = URLのself.url.format(キロワット、PN)
            得る適切な 
            HTML = self.get_page(URL)
            ファイル名 = ' - {}ページの.htmlの{} ' .format(名前、ページ)
            self.write_page(ファイル名、HTML )
            プロンプト
            を印刷' ページクロール成功{} ' .format(ページ))
            制御クロール速度 
            time.sleep(random.randint(1,3))

 

最後に、すべてのコードを以下に示します

#のインポートモジュール
から urllibはのインポート要求、解析
 インポート時間
 インポートランダム

クラスBaiduspider(オブジェクト):
     DEF  __init__ (自己):
        self.url = ' http://tieba.baidu.com/f?kw=&PN = {} {} ' 
        self.headers = { ' User--エージェント'' win7の:Mozillaの/ 5.0(Windows NTの6.1; WOW64)のAppleWebKit / 535.1(KHTML、ヤモリなど)クローム/ 14.0.835.163 Safariの/ 535.1 " } 

    #のGETページ
    DEF get_page(自己、URL):
        定義要求オブジェクト
        = request.Request REQ(URL = URL、ヘッダー= self.headers)
        開始要求 
        RES = request.urlopen(REQ)
        適切なターゲットを得る 
        HTML res.read =()。(デコード' UTF-を8 '' 無視' リターンHTMLの


    #は、データ解析された
    DEFのparse_page(セルフ):
         パス

    #はデータ保存
    DEFのwrite_page(セルフ、ファイル名、HTMLを):
        セーブデータをローカルに 
        オープン(ファイル名、と' W '、エンコード= ' UTF-8。')AS F:
            f.write(HTML) 

    主な機能
    DEF メイン(セルフ):
        名前 = INPUT(' 名前が貼り付けてください:>>>> ' 
        スタート = INT(INPUT(' ホームを入力' ))
        エンド = INT(入力(' 終了ページを入力してください' ))
         のためのページ範囲(開始、終了+ 1。 ):
             スプライシングされたURLアドレス'http://tieba.baidu.com/f?kw PN = {} {}&' 
            #のコード化URLアドレスコードのための中国の文字エンコーディング 
            キロワット= parse.quote(名前)
             #は、現在のページを取得する 
            のpn =(ページ-1)* 50 #を
            スプライシングのURLアドレス 
            URLは= self.url.format(キロワット、PN)
            、適切な入手 
            HTML = self.get_page(URL)
            のファイル名を = ' {} - {}ページの.htmlの' .format(名前、ページ)
            セルフ。 write_page(ファイル名、HTML) 
            プロンプト
            を印刷' ページに成功した{}クロール' .format(ページ))
            速度をクロール制御 
            time.sleep(random.randint(1,3 ))

IF  __name__ == ' __main__ ' 
    スパイダー = Baiduspider()
    spider.main()

非常に、非常に単純な爬虫類は、営業成績のスクリーンショットでは、完全な見てみましょうです。

 

 

 

 htmlファイルは、当社の通常のオープニングページとあまり差が開いています

 

おすすめ

転載: www.cnblogs.com/gongdada/p/11620613.html