エージェント・プール4のpythonの建設 - CRUDデータベースmongdb

前のブログのアドレス:IPのpythonのビルド3--クロールプロキシエージェント・プール

 

まず、変更への追加や削除は、データベースmongdbを検索します

- * -コーディング:UTF-8を- * - 。
「」 ' 
エージェント・プールのデータベースモジュールを達成する

      ●効果:データベース操作に関連プロキシのセットのために

      、関連するデータベースの削除変更、検索手順を達成するために:目的

      1.初期化をデータ接続は、基本的なCRUDメソッド関数はデル提供するために、操作のセットを得るために、クローズ接続2.確立される

      I I挿入が実装される機能を変更実装.. 

      削除IP剤:ILIは、エージェントを削除達成しました作用IVクエリ全IPプロキシ機能3.エージェントAPIモジュールが使用するための機能を提供する

      iは、クエリ機能のため:条件に応じて、クエリの数は、品質保証の生成速度を上昇で、スコアの降順前に、クエリ指定することができ

      、上記IPの処理。

      II。ドメイン名のプロトコルタイプの下に実装し、サイトにアクセスしたい場合は、プロキシIPリストの取得

      ILIを。ドメイン名のプロトコルタイプに基づいて実現し、ランダムにプロキシれるipivを取得し、サイトにアクセスしたい。disable_plomainリストに指定されたドメイン名を追加するためになさIPのを指定します。

「」 ' 
インポートSYS
 インポートログ
 インポートpymongo
 から pymongo インポートMongoClientの
sys.path.append(".. " 
sys.path.append(" ../ .. " 設定がインポートMONGO_URLを
 から utils.log インポートロガー
 からドメインインポートプロキシ

クラスMongoPool(オブジェクト):
     デフ __init__ (自己):
        self.client = MongoClient( MONGO_URL)
                                    分别对应库和集合 
        self.proxies = self.client [ ' Proxies_pool ' ] [ ' プロキシ' ] 

    DEF  __del__(自己):
        self.client.close() 

    mongdb中为主键"は_id" 
    DEF :insert_one(自己、プロキシ)
        カウント   = self.proxies.count_documents({ ' _id ' :proxy.ip})
         場合、カウント== 0 :
            DIC =プロキシ。__dict__ 
            DIC [ ' _id ' ] = proxy.ip 
            self.proxies.insert_one(DIC)
            logger.info(" 成功インサート:{} " .format(プロキシ))
         
            logger.warning(" インサートデフォルト:{} ".format(プロキシ))

    デフupdate_proxy(自己、プロキシ):
        self.proxies.update_one({ ' _id ':proxy.ip}、{ ' $セット':プロキシ__dict__ })

    デフdelete_one(自己、プロキシ):
        セルフ.proxies.delete_one({ ' _id ' :proxy.ip})
        logger.info(" 削除IP:{} " .format(proxy.ip))

    デフfind_all(自己):
        すべて = self.proxies.find()
         のために項目のすべて:
            item.pop(" _id' 
            プロキシ =プロキシ(** アイテム)
             降伏プロキシ

    DEF、(条件を自己を見つける= {}、カウント= 10 ):
        すべて = self.proxies.find(条件、限界= カウント).sort(
            [(' socre '、 、()pymongo.DESCENDING ' 速度' 、pymongo.ASCENDING)] 

        proxy_list = []
         のための項目すべて
            item.pop(' _id ' 
            プロキシ =プロキシ(**アイテム)
            proxy_list.append(プロキシ)
        戻りproxy_list 

    DEF get_proxies(自己、プロトコル=なし、ドメイン=なし、カウント= 8、nick_type = 0):
        条件 = { ' nick_type ' :nick_type}
         あればプロトコルはありませんなし:
            症状[ ' プロトコル' ] = 2
         のelif protocol.lower()== ' HTTP ' 
            条件[ ' プロトコル' ] = { ' $で':[0,2 ]}
         
            条件[ ' プロトコル' ] = { ' で$ ':[1、2 ]} 

        場合、ドメイン:
            条件[ ' disable_domains ' ] = { ' $ニン' :[ドメイン]} 

        戻り self.find(条件は、カウント= カウント)

    DEF add_disable_domain(自己、IP、ドメイン):
         もし self.proxies.count_documents({ ' _id ':IP、' disable_domain ':ドメイン})== 0:
            self.proxies.update_one({ ' _id ':IP}、{ ' $プッシュ':{ ' disable_domains ' :ドメイン}})
             を返す真の
         リターンはFalseを

場合 __name__ == ' __main__ ' 
    モンゴ = MongoPool()
     ''」
    プロキシ=プロキシ( '117.95.55.40'、ポート= '9999')
    
    mongo.insert_one(プロキシ)
    '' ' 

    ' '' 
    mongo.find_allにおけるプロキシの():
        プリント(プロキシ)
    '' ' 

    mongo.add_disable_domain(' 117.95.55.40 ''jd.com "

 

第二に、このコードの一部を使用する方法を教えて

まず、メソッドを実行するには、「クラスメソッド名(パラメータ)」を通じて、このの一部であるクラスオブジェクトを作成し、そして、このパラメータは私たちの前のあるプロキシのIPオブジェクト、これは最初のブログのコンテンツです

 

IPの代理エージェント・プールクロール3--のpythonの建設ブログがMongoPoolのこのクラスの使用であることを

 

より多くのMongoDBデータベース操作を習得するには、ここで見ることができます。https://www.runoob.com/mongodb/mongodb-tutorial.html

おすすめ

転載: www.cnblogs.com/kongbursi-2292702937/p/12174654.html