[Notas del rastreador] El rastreador de Python simplemente utiliza la IP del proxy de rastreo

I. Introducción

En los últimos años, ha habido cada vez más rastreadores en Internet y muchos sitios web han restringido los rastreadores y bloqueado algunas solicitudes irregulares. Para realizar las tareas normales de los rastreadores web, los rastreadores suelen utilizar IP proxy para ocultar sus IP reales y evitar que el servidor los prohíba. Este artículo presentará cómo usar un rastreador de Python para obtener la IP del proxy y cómo usar la IP del proxy en el rastreador.

2. Obtener IP proxy

Hay dos formas de obtener una IP proxy: un sitio web de IP proxy gratuito y un servicio de IP proxy de pago. Los sitios web de IP proxy gratuitos suelen proporcionar algunas IP proxy gratuitas, pero la calidad de estas IP proxy es muy inestable y pueden prohibirse o invalidarse fácilmente; los servicios de IP proxy pagados proporcionan IP proxy estables y confiables, pero deben adquirirse por una tarifa. Dado que este artículo presenta principalmente cómo usar el rastreador de Python, utilizaremos el sitio web de IP proxy gratuito para obtener la IP proxy.

Específicamente, podemos utilizar un rastreador para rastrear la lista de IP de proxy en algunos sitios web de IP de proxy gratuitos. Aquí tomamos como ejemplo la IP proxy gratuita del sitio web, los pasos específicos son los siguientes:

  1. Abra el sitio web del proxy Zdaye (https://www.zdaye.com/), seleccione el tipo de IP y la ubicación del proxy y haga clic en el botón de búsqueda.
  2. Abra las herramientas de desarrollador (F12), ingrese a la pestaña Red, haga clic en el botón Borrar y luego haga clic en el botón "Obtener más contenido" para observar si se envían nuevas solicitudes.
  3. Se encontró una solicitud denominada "nn" y la URL solicitada era https://www.zdaye.com/nn/1, donde "nn" representa la IP del proxy de alta densidad y el número "1" representa el número de página. . Podemos obtener la IP proxy de diferentes páginas modificando el número de página.
  4. Agregue el campo "Usuario-Agente" en el encabezado de la solicitud para simular una solicitud del navegador y evitar ser rechazado por el servidor.
  5. Tome el código HTML en la respuesta y extraiga la IP del proxy y su número de puerto usando expresiones regulares o la biblioteca BeautifulSoup.

La siguiente es la implementación específica del código Python:

import requests
from bs4 import BeautifulSoup
import re

# 抓取代理IP列表
def fetch_proxy_ips():
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
    url_template = 'http://www.zdaye.com/nn/{}'
    proxy_ips = []
    for page in range(1, 11):
        url = url_template.format(page)
        resp = requests.get(url, headers=headers)
        soup = BeautifulSoup(resp.text, 'html.parser')
        trs = soup.find_all('tr')
        for tr in trs[1:]:
            tds = tr.find_all('td')
            proxy_ip = tds[1].text + ':' + tds[2].text
            proxy_ips.append(proxy_ip)
    return proxy_ips

# 测试代理IP是否可用
def test_proxy_ip(proxy_ip):
    url = 'http://httpbin.org/ip'
    proxies = {
        'http': 'http://' + proxy_ip,
        'https': 'https://' + proxy_ip
    }
    try:
        resp = requests.get(url, proxies=proxies, timeout=5)
        resp.raise_for_status()
        return True
    except:
        return False

# 获取可用的代理IP
def get_valid_proxy_ips():
    proxy_ips = fetch_proxy_ips()
    valid_proxy_ips = []
    for proxy_ip in proxy_ips:
        if test_proxy_ip(proxy_ip):
            valid_proxy_ips.append(proxy_ip)
    return valid_proxy_ips

print(get_valid_proxy_ips())

En el código anterior, primero usamos la función fetch_proxy_ips() para rastrear las primeras 10 páginas de la lista de IP de proxy de alto anonimato en el sitio web de proxy de West Spur, y luego usamos la función test_proxy_ip() para probar si cada IP de proxy está disponible (la URL de prueba es http://httpbin.org/ip) y, finalmente, use la función get_valid_proxy_ips() para devolver la lista de IP de proxy disponibles.

3. Utilice IP proxy

Los parámetros de los servidores proxy se pueden especificar en la biblioteca de solicitudes utilizando la IP del proxy. El parámetro de proxy es un tipo de diccionario, donde el nombre de la clave es el protocolo (http o https) y el valor de la clave es la IP del proxy y su número de puerto. Por ejemplo, si queremos utilizar un servidor proxy con una dirección IP proxy de "1.2.3.4" y un número de puerto "5678", el parámetro de proxy debe ser:

proxies = {
    'http': 'http://1.2.3.4:5678',
    'https': 'https://1.2.3.4:5678'
}

El siguiente es un ejemplo de rastreador simple que utiliza IP proxy para rastrear la página de búsqueda de productos JD:

import requests

# 使用代理IP爬取京东商品搜索页面
def crawl_jd_goods(query, proxy_ip):
    url_template = 'https://search.jd.com/Search?keyword={}&enc=utf-8&page={}'
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
    proxies = {
        'http': 'http://' + proxy_ip,
        'https': 'https://' + proxy_ip
    }
    for page in range(1, 6):
        url = url_template.format(query, page)
        resp = requests.get(url, headers=headers, proxies=proxies)
        print(resp.status_code)
        print(resp.text)

# 获取可用的代理IP
proxy_ips = get_valid_proxy_ips()

# 使用第一个可用的代理IP爬取京东商品搜索页面
query = 'Python编程'
proxy_ip = proxy_ips[0]
crawl_jd_goods(query, proxy_ip)

En el código anterior, primero obtenemos la lista de IP de proxy disponibles y luego usamos la primera IP de proxy disponible para rastrear la página de búsqueda de productos JD.com (la palabra clave de búsqueda es "programación Python").

4. Resumen

Cabe señalar que la IP proxy no es una panacea: en algunos sitios web con mecanismos anti-rastreadores muy potentes, incluso el uso de IP proxy se puede prohibir fácilmente. Además, algunas IP proxy tienen mala calidad, velocidades de acceso lentas e incluso devuelven respuestas de error. Por lo tanto, en el uso real, es necesario seleccionar la IP del proxy disponible según la situación específica.

Supongo que te gusta

Origin blog.csdn.net/wq10_12/article/details/132735717
Recomendado
Clasificación