前のブログのアドレス: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