序文
Python クローラー プロキシ IP を使用すると、クローラー対策の制限を回避できるため、ブログの閲覧量をすぐに増やすことができます。この記事では、Python クローラー プロキシ IP の使用方法と、それを使用してブログの閲覧数を増やす方法について説明します。
1. プロキシIPとは
プロキシ IP は、ネットワーク環境で実際の IP アドレスを隠すために使用される IP アドレスです。クローラーでは、プロキシ IP は一部のクローラー対策制限を回避するためによく使用され、クローラーの識別と禁止がより困難になります。
2.プロキシIPを取得する
プロキシ IP を取得するにはいくつかの方法がありますが、インターネット上の一部のパブリック プロキシ IP リソースはブロックされることが多いため、安定したプロキシ IP を自分で購入する必要があります。
推奨されるいくつかのプロキシ IP サービスを次に示します。
- ウェブサイトエージェント: https://www.zdaye.com
- 通信社: https://www.xdaili.com
これらのプロキシ IP サービス プロバイダーは API インターフェイスを提供しており、API を通じてプロキシ IP を取得できます。
Web サイト プロキシを例として、GET リクエストを通じて無料のプロキシ IP を取得します。
import requests
def get_proxy():
try:
response = requests.get('https://www.zdaye.com/free/')
if response.status_code == 200:
return response.text
return None
except RequestException:
return None
返されるのは Web ページの HTML です。正規表現を使用して IP アドレスとポート番号を抽出する必要があります。
import re
def parse_proxy(html):
pattern = re.compile('<tr.*?>\s*?<td data-title="IP">(.*?)</td>\s*?<td data-title="PORT">(.*?)</td>.*?</tr>', re.S)
items = re.findall(pattern, html)
for item in items:
yield item[0] + ':' + item[1]
正規表現の意味については次のとおりです。
- `<tr.*?>`: <tr> タグと一致します。
- `\s*?`: 0 個以上の空白文字と一致します
- `<td data-title="IP">(.*?)</td>`: <td data-title="IP"> と </td> の間の IP アドレスと一致します。
- `\s*?`: 0 個以上の空白文字と一致します
- `<td data-title="PORT">(.*?)</td>`: <td data-title="PORT"> と </td> の間のポート番号と一致します。
- `.*?</tr>`: <tr> と </tr> の間の内容と一致します。
3. プロキシ IP を使用する
プロキシ IP を使用すると、ブログのクロールに使用できます。ここでは、CSDN のクロールを例として取り上げます。
まず、プロキシ IP をランダムに選択する必要があります。
import random
proxy_list = ['123.206.189.74:1080', '118.24.61.212:1080', '118.24.61.213:1080']
PROXY = random.choice(proxy_list)
proxies = {'http': 'http://{proxy}'.format(proxy=PROXY), 'https': 'https://{proxy}'.format(proxy=PROXY)}
ここでは、Python のランダム ライブラリを使用して、プロキシ IP をランダムに選択します。proxies パラメータは辞書、キーはプロトコル、値はプロキシ IP です。
次に、リクエスト ライブラリを使用して HTTP リクエストを開始し、プロキシ パラメータを設定する必要があります。
import requests
url = 'https://blog.csdn.net/xxx/article/details/xxx'
response = requests.get(url, proxies=proxies)
これは、アクセスしたいブログのアドレスに置き換える必要があります。プロキシ IP が使用できない場合、リクエスト ライブラリは自動的に ProxyError 例外をスローします。この例外をキャッチしてプロキシ IP を再選択できます。
from requests.exceptions import ProxyError
while True:
try:
response = requests.get(url, proxies=proxies)
break
except ProxyError:
PROXY = random.choice(proxy_list)
proxies = {'http': 'http://{proxy}'.format(proxy=PROXY), 'https': 'https://{proxy}'.format(proxy=PROXY)}
ここでは while ループを使用して、成功するまで再試行を続けます。
4. 完全なコード
以下は、プロキシ IP の取得、プロキシ IP のランダム選択、ブログへのアクセス、再試行などの機能を含む完全なコードです。ニーズに応じて変更できます。
import requests
import re
import random
from requests.exceptions import ProxyError
PROXY_LIST = ['123.206.189.74:1080', '118.24.61.212:1080', '118.24.61.213:1080']
def get_proxy():
try:
response = requests.get('https://www.zdaye.com/free/')
if response.status_code == 200:
return response.text
return None
except RequestException:
return None
def parse_proxy(html):
pattern = re.compile('<tr.*?>\s*?<td data-title="IP">(.*?)</td>\s*?<td data-title="PORT">(.*?)</td>.*?</tr>', re.S)
items = re.findall(pattern, html)
for item in items:
yield item[0] + ':' + item[1]
def get_random_proxy():
PROXY = random.choice(PROXY_LIST)
proxies = {'http': 'http://{proxy}'.format(proxy=PROXY), 'https': 'https://{proxy}'.format(proxy=PROXY)}
return proxies
def retry_get(url, retry_times=3):
while retry_times > 0:
try:
proxies = get_random_proxy()
response = requests.get(url, proxies=proxies)
if response.status_code == 200:
return response.text
except ProxyError:
pass
retry_times -= 1
return None
if __name__ == '__main__':
url = 'https://blog.csdn.net/xxx/article/details/xxx'
html = retry_get(url)
5. 注意事項
プロキシ IP を使用すると、クローラー対策の制限をある程度回避できますが、過度の使用は Web サイトによって悪意のあるアクセスとして認識され、IP が禁止されます。したがって、プロキシ IP を使用する場合は、次の点に注意する必要があります。
- プロキシ IP が頻繁に変更されることを避けるために、安定したプロキシ IP サービス プロバイダーを選択してください。
- 同じ IP の使用を避けるために、プロキシ IP をランダムに選択します。
- プロキシ IP を過度に使用しないでください。訪問の 30% を超える場合はプロキシ IP を使用しないことをお勧めします。
6. まとめ
この記事では、Python クローラー プロキシ IP を使用してブログの閲覧量をすぐに増やす方法を紹介します。プロキシ IP の取得、プロキシ IP のランダム選択、ブログへのアクセス、再試行などの機能はすべて Python で実装できます。プロキシ IP を使用する場合は、IP から禁止されないように、安定性と使用法に注意を払う必要があります。