クロールとストレージインフラストラクチャマルチスレッド

マルチスレッド:

一般的なPythonプログラムは、最初の二つの個人消費のダウンロードからデータをダウンロードするよう、一つだけ後ろに完成ランニングの前に実行するために実行した後、順番を表し、時には、これは時間の無駄であるフォアグラウンド(メインスレッド)で実行されていますときに、第2の個別時間のかかるダウンロードt2の間t1が、時間をt1 + t2のですが、時間が最大(T1、T2)のときにバックグラウンドに実行される2つのプログラムが、これはもう少し一つの利点は、データに反映されているよりもあると思われますアウト

まず、インポートスレッドライブラリ

インポートのスレッド

xxx.threading.Thread(ターゲット= YYY、引数=)関数名を作成するためのyyyは、バックグラウンドスレッドで実行されているxxxのある、機能YYYで渡されたパラメータ引数

この名前のスレッドを開始するxxx.startは()XXXあります

次のスレッドおよびその他の完成品作りの文:xxx.join()このスレッドを差し込みます

一部のストレージとは、読んで:

最初の二つの機能、OSのライブラリを導入

os.path.exsist(パス):リターンパスパスブール値があるか否かを判定する

os.getcwd = XXX() 現在の作業ディレクトリの絶対アドレスを取得します。

書き込みテキスト(文字列)コード|スクリプト

  

インポートスレッディング
 インポートOS 

DEFのWRITE_FILE(パス、データ):
     「」「
    :のparamパス:ファイルに書き込まれるパス
    :PARAMデータ:データがファイルに書き込まれる
    :リターン:
    」「」
    F =オープン(パス、WB 
    f.write(data.encode(' UTF-8。' ))
    f.close()
    を印刷' ファイルが正常に書かれた' DEFのGET_PATH(名):
     '' ' 
    :PARAM名:入力ファイル名
    :リターン:出力ファイルの絶対パス
    「」 ' 
    os_path = OS。  GETCWD() GET現在のフォルダパス
    FILE_NAME =名+ .txtの  #は、新しいファイルの名前入力して
    リターンを os_path + \\  +のfile_name   #は絶対アドレスを与える

DEF :construct_file(名前、データ)
     「」 ' 
        のみ、この機能を、その後、無上書きファイルが機能し
        、入力ファイル名を
    :名前のparam: リターン:
    '' ' 
    パス = GET_PATH(名)
     IF  ないのos.path.exists(パス):
        WRITE_FILE(パス、データ)
    印刷' ファイル名が既に存在する' を印刷'ファイル上書きY- | N IF INPUT()== Y- 

            印刷ファイルの上書き成功
            WRITE_FILE(パス、データ)
            の戻り0
         印刷ファイル名を再入力します... " のリターン。1
     リターン0
 DEFのwrite_dataintofile(データ):
     「」「
    :のparamデータ:ファイルに書き込まれたデータ
    :リターン:なし戻り値を
    」「」
    印刷ファイル名を入力してください... しばらくconstruct_file(入力()、データ):
         合格

 

空白の読書を取り除くコード(文字列)を読みます

デフINP():
    SR = 入力()を
    入力します。 = []
     のためにSR:
         場合は、私== '  ' 引き続き
        
            enter.append(I)
    S = '' .join(入力)
     リターン

 

ここではオープンにいくつかのパラメータがあり、私は常に操作を覚えているでしょう書きます

「Rtが」読み取り専用のみのデータを読み取ることができ、テキストファイルを開き
、オープン書き込み専用「WT」またはテキストファイルを作成するだけで、書き込みデータ可能
ファイルの末尾にテキストファイルと書き込みデータを開くためにAPPEND「での」
読み取り専用「RBを」読み取り専用データできるように、バイナリファイルを開いて
「WB」書き込み専用オープンまたはバイナリファイルを作成し、唯一の書き込みデータ可能
ファイルの末尾にバイナリファイルと書き込みデータを開くには、「AB」APPENDを
、「RT +」テキストファイルを開くには、読み取りおよび書き込み読み書き可能
「重量+」書き込みオープンまたは書き込みを可能にする、テキストファイルを作成
読み取りと書き込み、読み出しまたはデータファイルの末尾に追加できるようにテキストファイルを開くために「+で」
「RB +」オープンにバイナリファイルを読み込み、許可リード書き込み
「WB +」の書き込みオープンまたは読み書き可能にバイナリファイルを作成し
たバイナリファイルの読み書きを開くには、「AB +」は、ファイルの末尾に読み、または追記データを許可します

あなたはめったに人々は+記号を使用し見ない理由を私は知りませんが?どのような欠点はありますか?

満たされたピット

絵は、ダウンロードを読み込みます

BS4の輸入BeautifulSoupの
 輸入urllib.request
 から BS4 輸入UnicodeDammit
 場合 __name__ == ' __main__ ' 
    URL = ' https://misaka.design.blog/ ' 
    のuser_agent = { ' user_agentの'" ;のMozilla / 5.0(Windows NTの6.1 WOW64)のAppleWebKit /ヤモリ様537.36(KHTML)クローム/ 39.0.2171.71サファリ/ 537.36 " } 
    REQ = urllib.request.Request(URL、ヘッダー= user_agentの)
    RES =urllib.request.urlopen(URL)
    DOC = res.read()
    くそ = UnicodeDammit(DOC、[ " UTF-8 "" GBK " ])
    DOC = dammit.unicode_markup 
    スープ = BeautifulSoup(DOC、" html.parser " 
    データ = soup.select(" IMG [= 'POSTサムネイル'クラス] " URL画像で得られた 
    IMG = urllib.request.urlopen(データ[0] [ ' SRC ' ])
    IMGA = img.read( )#のバイナリデータ内の読み出しアドレス
    印刷(IMGA)

    F =オープン(R ' imag1.jpg '' WB 'JPGファイルを作成します
    f.write(IMGA)
    バイナリイメージファイルを書き込むためには、その後、画像がダウンロードされる 
    ()をf.close

 

おすすめ

転載: www.cnblogs.com/cherrypill/p/12407717.html