Python クローラー プロキシ IP を通じてブログの閲覧量を迅速に増加

序文

Python クローラー プロキシ IP を使用すると、クローラー対策の制限を回避できるため、ブログの閲覧量をすぐに増やすことができます。この記事では、Python クローラー プロキシ IP の使用方法と、それを使用してブログの閲覧数を増やす方法について説明します。

1. プロキシIPとは

プロキシ IP は、ネットワーク環境で実際の IP アドレスを隠すために使用される IP アドレスです。クローラーでは、プロキシ IP は一部のクローラー対策制限を回避するためによく使用され、クローラーの識別と禁止がより困難になります。

2.プロキシIPを取得する

プロキシ IP を取得するにはいくつかの方法がありますが、インターネット上の一部のパブリック プロキシ IP リソースはブロックされることが多いため、安定したプロキシ IP を自分で購入する必要があります。

推奨されるいくつかのプロキシ IP サービスを次に示します。

  1. ウェブサイトエージェント: https://www.zdaye.com
  2. 通信社: 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 から禁止されないように、安定性と使用法に注意を払う必要があります。

おすすめ

転載: blog.csdn.net/wq10_12/article/details/133306456