プロセス指向のコード
インポートが要求 #ステップ #は、URLアドレスを決定したURLのリストを生成 #トラバースURLリストを、要求データ #は、ローカルに返されるデータセーブ #https://tieba.baidu.com/f?kw=武漢&PN * 0 = 0 50 #https://tieba.baidu.com/f?kw=武漢、PN = 50 50 *&1 #https://tieba.baidu.com/f?kw=武漢、PN = 100 50 *&2 #HTTPS:// Tieba .baidu.com / F?キロワット=武漢、PN = 150 50 *&3 #https://tieba.baidu.com/f?kw=武漢、PN = 200 50×&4 #のカスタムポストバー名 名= INPUT(" してくださいそれは名前を入力し、貼り付けます。' ) #URLテンプレート のURL = ' https://tieba.baidu.com/f?kw= PN = {} {}&" #生成されたリストURL [url.format(名前、50 * I)= URL_LIST 用 I における(5レンジ)] プリント(URL_LIST) #は、上ヘッダ情報コピー要求ブラウザを定義する ヘッダー= { " User--エージェント":" はMozilla / 5.0 (Macintosh版、インテルのMac OS X-10_13_6)のAppleWebKit / 537.36(ヤモリのようにKHTML、)クローム/ 80.0.3987.163サファリ/ 537.36 " } #反復url_list、GET URL のための項目でuRL_LIST: #要求URL、データ取得への 応答を= requests.get (項目、ヘッダ= ヘッダ) #のファイル名 file_nameが= " _それを投稿しました' + name + " 第{}页" .format(url_list.index(item)+1)+ " .html " #保存到文件 with open(file_name、' w '、encoding = ' utf-8 ' )as f : f.write(response.content.decode())
オブジェクト指向コードをカプセル化する
#1は、URL生成URL_LIST決定 #2.リストを横断し、要求データ #3の戻りデータは、ローカルに保存された インポート要求 クラス:Tieba_spider(オブジェクト) DEF __init__ (セルフ、名前を): #それを貼り付ける名前 self.name = 名 #をURL貼り付け初期 self.url = ' https://tieba.baidu.com/f?kw= ' +名+ ' &= {PNは} ' 位上にヘッダ情報コピー要求ブラウザを定義 = self.headers { " ユーザーエージェント":"Mozilla / 5.0(Macintosh; Intel Mac OS X 10_13_6)AppleWebKit / 537.36(KHTML、like Gecko)Chrome / 80.0.3987.163 Safari / 537.36 " } def get_url_list(self): " "" Generate url list "" " url_list = [self .url.format(50 * I)のために I 中(5レンジ)] を返すURL_LIST DEFの:get_data_fromurl(セルフ、URL)を "" " サーバーからデータを取得し、復号返す" "" #のリクエストURLを、URLというデータを得ることですurl_listから来る横断する レスポンス= requests.get(URL、ヘッダ= self.headers) リターンresponse.content。decode() defsave_html(セルフ、html_str、NUM): #ファイル名 FILE_NAME = ' ポストバー_ ' + self.name + " P上の{} " .format(NUM)+ " の.html " #ファイルに保存された オープンして(file_nameに、「W '、encoding = ' utf-8 ' )as f: f.write(html_str) def run(self): pass #1.生成するURLを決定url_list url_list = self.get_url_list() #2.リストをトラバースし、 item_urlのデータをリクエストでURL_LIST: html_str = self.get_data_fromurl(item_url)は #3の戻りデータは、ローカルに保存 self.save_html(html_str、url_list.index(item_url)+ 1。 ) IF __name__ == ' __main__ ' : #の入力 名= INPUT(" してくださいそれに接続されている名前を入力してください:" ) #初期 スパイダー= Tieba_spider(名) #runメソッドの呼び出し (spider.runを)