この記事では、Python によるプロキシ IP の取得に関する例の共有を主に紹介します。これは、必要なデータをクロールする必要があるときに、常に共有します。一部の Web サイトでは、同じ IP からの繰り返しの訪問を禁止しています。このとき、「敵」がそれを検出できないように、毎回訪問する前にプロキシ IP を使用して自分自身を偽装する必要があります。
おおおおおおおおおおおおおおおおおおおおおおおお、楽しく始めましょう!
これは、プロキシ IP を取得するためのファイルであり、それらをモジュール化して 3 つの関数に分割しました 注: コードを記述するため、テキスト内にいくつかの英語のコメントが含まれています。 2 つの英単語でOKです
#!/usr/bin/python #-*- coding:utf-8 -*- """ author:dasuda """ import urllib2 import re import socket import threading findIP = [] #获取的原始IP数据 IP_data = [] #拼接端口后的IP数据 IP_data_checked = [] #检查可用性后的IP数据 findPORT = [] #IP对应的端口 available_table = [] #可用IP的索引 def getIP(url_target): patternIP = re.compile(r'(?<=<td>)[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}') patternPORT = re.compile(r'(?<=<td>)[\d]{2,5}(?=</td>)') print "now,start to refresh proxy IP..." for page in range(1,4): url = 'http://www.xicidaili.com/nn/'+str(page) headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64)"} request = urllib2.Request(url=url, headers=headers) response = urllib2.urlopen(request) content = response.read() findIP = re.findall(patternIP,str(content)) findPORT = re.findall(patternPORT,str(content)) #assemble the ip and port for i in range(len(findIP)): findIP[i] = findIP[i] + ":" + findPORT[i] IP_data.extend(findIP) print('get page', page) print "refresh done!!!" #use multithreading mul_thread_check(url_target) return IP_data_checked def check_one(url_check,i): #get lock lock = threading.Lock() #setting timeout socket.setdefaulttimeout(8) try: ppp = {"http":IP_data[i]} proxy_support = urllib2.ProxyHandler(ppp) openercheck = urllib2.build_opener(proxy_support) urllib2.install_opener(openercheck) request = urllib2.Request(url_check) request.add_header('User-Agent',"Mozilla/5.0 (Windows NT 10.0; WOW64)") html = urllib2.urlopen(request).read() lock.acquire() print(IP_data[i],'is OK') #get available ip index available_table.append(i) lock.release() except Exception as e: lock.acquire() print('error') lock.release() def mul_thread_check(url_mul_check): threads = [] for i in range(len(IP_data)): #creat thread... thread = threading.Thread(target=check_one, args=[url_mul_check,i,]) threads.append(thread) thread.start() print "new thread start",i for thread in threads: thread.join() #get the IP_data_checked[] for error_cnt in range(len(available_table)): aseemble_ip = {'http': IP_data[available_table[error_cnt]]} IP_data_checked.append(aseemble_ip) print "available proxy ip:",len(available_table)
1. getIP(url_target): メイン関数の受信パラメータは次のとおりです: プロキシ IP が利用可能であることを確認するための URL。ipchina からプロキシ IP を取得することをお勧めします。 、http://www.xicidaili.com/nn/ Web サイトから入手、無料のプロキシ IP を提供する Web サイトですが、その中のすべての IP を使用できるわけではなく、実際の地理的位置、ネットワークの状態、ターゲットに基づいてアクセスしたサーバーなど、使用できるのは20%未満、少なくとも私の場合はこんな感じです。
通常の方法を使用して http://www.xicidaili.com/nn/ Web サイトにアクセスします。返された Web ページのコンテンツは、通常のクエリを通じて必要な IP と対応するポートを取得します。コードは次のとおりです。正規表現については、他の記事を参照してください:
取得された IP は findIP に保存され、対応するポートはインデックスによって相互に対応します。通常、ページ上で取得される IP の数は 100 です。
次に、IP とポートを結合します
最後に、可用性をチェックします
2. check_one(url_check,i): スレッド関数
今回は、Web ページにアクセスするときに url_check が通常の方法でアクセスされます。これは、プロキシ IP が利用可能であり、現在のインデックス値が記録されていることを意味します。これは、後で利用可能なすべての IP を抽出するために使用されます。
3. mul_thread_check(url_mul_check): マルチスレッド生成
この関数は、プロキシ IP の可用性をチェックするためのマルチスレッドを有効にし、各 IP がチェック用のスレッドを開始します。 このプロジェクトは getIP() を直接呼び出し、可用性の確認に使用される URL を渡します。これにより、可用性が確認された IP のリストであるリストが
patternIP = re.compile(r'(?<=<td>)[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}') patternPORT = re.compile(r'(?<=<td>)[\d]{2,5}(?=</td>)') ... findIP = re.findall(patternIP,str(content)) findPORT = re.findall(patternPORT,str(content))
の形式で返されます関連推奨事項:
Python クローラーキャプチャ プロキシ IP を取得して利用可能かどうかを確認する例
プロキシ IP を収集し、利用可能かどうかを判断し、定期的に更新する Python メソッド
以上がプロキシIPを取得するPythonの共有例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

メモ帳++7.3.1
使いやすく無料のコードエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

WebStorm Mac版
便利なJavaScript開発ツール
