pythonは代理ipの例をよじ登ります。
大量のデータを爬虫類と書くと、ipが封鎖されてしまう問題に直面します。遅延を設定することでサイトへのアクセスを遅らせることができますが、訪問回数が多すぎると、ipが閉じられてしまうリスクに直面します。この時は、動的なipアドレスを使って本当のip情報を隠す必要があります。爬虫類プロジェクトを行うなら、いくつかのプラットフォームから提供される動的なipサービスを選ぶことを提案します。アプリを引用すればいいです。現在、国内では多くのダイナミックipを提供しています。普通価格は高くないですが、小さなプロジェクトで勉強したいなら、次の文章を参考にしてください。
簡単に述べる
このページでは、簡単な爬虫類プログラムを使用して、無料のipサイトのip情報を取得し、jsonファイルを作成し、利用できるipアドレスを記憶し、他の爬虫類プロジェクトを書く際に生成したjsonドキュメントからipアドレスを抽出して使用します。使用するipアドレスの有効性を確保するために、jsonドキュメントのip現時点での使用を推奨します。長い間よじ登るだけで、使えるipアドレスが記憶されています。
実現する
プラットフォームhttps://www.xicidaili.com/nn/をデータソースとして使用し、http://www.baidu.com/の対応によってipの使用可能性を判断する。lxmlモジュールを参照して、ウェブページのデータを抽出します。もちろん、reモジュールを使ってマッチング抽出してもいいです。ここでは、lxmlモジュールだけを使ってデータを抽出します。
https://www.xicidaili.com/nn/データソースにアクセスし、Fiddlerを起動してブラウザデータをモニターし、ここでブラウザーはProxy SwitchtyOmegaプラグインを使用してFiddlerに協力して使用し、Fiddlerで/nn/*データを見つけてUser-Agent情報を確認し、私たちが訪問した最初のテキストとしてコピーします。図のように:
モジュールの導入
以上はpythonが代理ipを取る例の詳しい内容です。pythonが代理ipを取る資料についてもっと多いです。他の関連記事に注目してください。
簡単に述べる
このページでは、簡単な爬虫類プログラムを使用して、無料のipサイトのip情報を取得し、jsonファイルを作成し、利用できるipアドレスを記憶し、他の爬虫類プロジェクトを書く際に生成したjsonドキュメントからipアドレスを抽出して使用します。使用するipアドレスの有効性を確保するために、jsonドキュメントのip現時点での使用を推奨します。長い間よじ登るだけで、使えるipアドレスが記憶されています。
実現する
プラットフォームhttps://www.xicidaili.com/nn/をデータソースとして使用し、http://www.baidu.com/の対応によってipの使用可能性を判断する。lxmlモジュールを参照して、ウェブページのデータを抽出します。もちろん、reモジュールを使ってマッチング抽出してもいいです。ここでは、lxmlモジュールだけを使ってデータを抽出します。
https://www.xicidaili.com/nn/データソースにアクセスし、Fiddlerを起動してブラウザデータをモニターし、ここでブラウザーはProxy SwitchtyOmegaプラグインを使用してFiddlerに協力して使用し、Fiddlerで/nn/*データを見つけてUser-Agent情報を確認し、私たちが訪問した最初のテキストとしてコピーします。図のように:
モジュールの導入
import requests
from lxml import etree
import time
import json
すべてのデータを取得
def get_all_proxy(page):
url = 'https://www.xicidaili.com/nn/%s'%page
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
}
response = requests.get(url, headers=headers)
html_ele = etree.HTML(response.text)
ip_eles = html_ele.xpath('//table[@id="ip_list"]/tr/td[2]/text()')
port_ele = html_ele.xpath('//table[@id="ip_list"]/tr/td[3]/text()')
print(ip_eles)
proxy_list = []
for i in range(0,len(ip_eles)):
check_all_proxy(ip_eles[i],port_ele[i])
return proxy_list
データをフィルタする:
def check_all_proxy(host,port):
type = 'http'
proxies = {}
proxy_str = "%s://@%s:%s" % (type, host, port)
valid_proxy_list = []
url = 'http://www.baidu.com/'
proxy_dict = {
'http': proxy_str,
'https': proxy_str
}
try:
start_time = time.time()
response = requests.get(url, proxies=proxy_dict, timeout=5)
if response.status_code == 200:
end_time = time.time()
print(' :' + proxy_str)
print(' :' + str(end_time - start_time))
proxies['type'] = type
proxies['host'] = host
proxies['port'] = port
proxiesJson = json.dumps(proxies)
with open('verified_y.json', 'a+') as f:
f.write(proxiesJson + '
')
print(" :%s" % proxy_str)
valid_proxy_list.append(proxy_str)
else:
print(' ')
except:
print(' --------------->'+proxy_str)
実行プログラム:
if __name__ == '__main__':
for i in range(1,11): #
proxy_list = get_all_proxy(i)
time.sleep(20)
print(valid_proxy_list)
作成したjsonファイル:以上はpythonが代理ipを取る例の詳しい内容です。pythonが代理ipを取る資料についてもっと多いです。他の関連記事に注目してください。