まず、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ファイルは、当社の通常のオープニングページとあまり差が開いています