Pandas rastreo y análisis de IP proxy con un solo clic y mantenimiento del grupo de IP proxy

I. Introducción

Proxy IP es una de las herramientas necesarias para que los rastreadores obtengan datos ahora y puede ayudarnos a evitar algunas medidas anti-rastreo, como bloqueo de IP, códigos de verificación, etc. Al mismo tiempo, también podemos utilizar IP proxy para implementar algunas funciones de rastreo distribuidas o de subprocesos múltiples para mejorar la eficiencia del rastreador. Sin embargo, obtener y verificar la IP del proxy es una tarea que requiere mucho tiempo y trabajo, por lo que necesitamos algunas herramientas que nos ayuden a obtener y verificar la IP del proxy automáticamente.

En Python, podemos usar algunas bibliotecas de terceros para lograr las funciones de verificación y adquisición de IP del proxy, entre las cuales se usan más comúnmente las bibliotecas de solicitudes y urllib. Al mismo tiempo, también podemos utilizar algunas bibliotecas de terceros para mantener grupos de IP proxy, como ProxyPool y ProxyScrape. Sin embargo, existen algunas limitaciones y fallas en el uso de estas bibliotecas. Por ejemplo, las bibliotecas de solicitudes y urllib no pueden cambiar automáticamente las IP de proxy, y bibliotecas como ProxyPool y ProxyScrape solo pueden obtener IP de proxy públicas, no IP de proxy privadas pagadas.

Para resolver los problemas anteriores, podemos utilizar la biblioteca Pandas para lograr el rastreo y análisis de las IP proxy con un solo clic y el mantenimiento de los grupos de IP proxy. La biblioteca Pandas es una biblioteca de análisis de datos muy utilizada en Python y puede ayudarnos a procesar datos rápidamente, incluida la limpieza, reorganización, agregación y otras operaciones de datos. Al mismo tiempo, la biblioteca Pandas también se puede utilizar para procesar datos de páginas web, incluido el análisis de datos en HTML, XML, JSON y otros formatos. En este artículo, presentaremos cómo utilizar la biblioteca Pandas para implementar la adquisición y verificación automática de IP de proxy, así como el mantenimiento de grupos de IP de proxy. Específicamente, cubriremos lo siguiente:

  1. Cómo utilizar la biblioteca Pandas para analizar datos de páginas web en HTML, XML, JSON y otros formatos;
  2. Cómo utilizar la biblioteca Pandas para obtener la IP del proxy y verificarla;
  3. Cómo utilizar la biblioteca Pandas para mantener grupos de IP proxy;
  4. Cómo guardar el grupo de IP de proxy en la base de datos MySQL usando la biblioteca Pandas.

2. Cómo utilizar la biblioteca Pandas para analizar datos de páginas web en HTML, XML, JSON y otros formatos

Durante el proceso de rastreo, a menudo nos encontramos con situaciones en las que necesitamos analizar datos de páginas web en HTML, XML, JSON y otros formatos. La biblioteca Pandas puede ayudarnos a analizar rápidamente datos en estos formatos y convertirlos al formato DataFrame. A continuación, presentaremos cómo utilizar la biblioteca Pandas para analizar datos de páginas web en HTML, XML, JSON y otros formatos.

1. Analizar datos de páginas web en formato HTML.

Al analizar datos de páginas web en formato HTML, podemos usar la función read_html() de la biblioteca Pandas. La función read_html() analizará automáticamente los datos de la tabla de acuerdo con la etiqueta de la tabla (<table>) en el archivo HTML y los convertirá al formato DataFrame. A continuación se muestra un ejemplo:

import pandas as pd

url = 'http://www.nasdaq.com/markets/most-active.aspx'

# 使用Pandas库解析HTML格式的网页数据
dfs = pd.read_html(url)

# 打印解析出来的第一个表格
print(dfs[0])

El código anterior analizará las acciones más activas en el mercado de valores NASDAQ y luego imprimirá la primera tabla analizada. Como puede ver, la biblioteca Pandas convierte los datos de la tabla al formato DataFrame y agrega automáticamente encabezados e índices de la tabla.

2. Analizar datos de páginas web en formato XML.

Al analizar datos de páginas web en formato XML, podemos usar la función read_xml() de la biblioteca Pandas. La función read_xml() analiza automáticamente los datos en función de las etiquetas del archivo XML y los convierte al formato DataFrame. A continuación se muestra un ejemplo:

import pandas as pd

url = 'http://www.w3schools.com/xml/note.xml'

# 使用Pandas库解析XML格式的网页数据
df = pd.read_xml(url)

# 打印解析出来的数据
print(df)

El código anterior analizará datos en formato XML y luego imprimirá los datos analizados. Como puede ver, la biblioteca Pandas convierte datos XML al formato DataFrame y agrega automáticamente nombres de columnas e índices.

3. Analizar datos de páginas web en formato JSON.

Al analizar datos de páginas web en formato JSON, podemos usar la función read_json() de la biblioteca Pandas. La función read_json() analiza automáticamente los datos en función de los pares clave-valor en el archivo JSON y los convierte al formato DataFrame. A continuación se muestra un ejemplo:

import pandas as pd

url = 'https://jsonplaceholder.typicode.com/todos'

# 使用Pandas库解析JSON格式的网页数据
df = pd.read_json(url)

# 打印解析出来的数据
print(df)

El código anterior analizará datos en formato JSON y luego imprimirá los datos analizados. Como puede ver, la biblioteca Pandas convierte datos JSON al formato DataFrame y agrega automáticamente nombres de columnas e índices.

3. Cómo utilizar la biblioteca Pandas para obtener la IP del proxy y verificarla

Cuando utilizamos una IP de proxy, debemos obtener la IP de proxy del sitio web de IP de proxy y verificarla para asegurarnos de que se pueda utilizar normalmente. Durante este proceso, podemos utilizar la biblioteca Pandas para obtener y verificar la IP del proxy.

Al obtener la IP del proxy, podemos enviar una solicitud al sitio web de la IP del proxy a través de la biblioteca de solicitudes y luego usar la biblioteca Pandas para analizar los datos HTML devueltos en formato DataFrame. A continuación se muestra un ejemplo:

import requests
import pandas as pd

url = 'http://www.zdaye.com/nn'

# 设置headers,模拟浏览器访问
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.3'}

# 发送请求,获取代理IP
response = requests.get(url, headers=headers)
dfs = pd.read_html(response.text)

# 将DataFrame格式的数据转换成列表格式
data = dfs[0].values.tolist()

El código anterior obtendrá la IP del proxy nacional de alta densidad del sitio web , analizará los datos HTML devueltos al formato DataFrame y luego convertirá los datos del formato DataFrame a un formato de lista.

Al verificar la IP del proxy, podemos enviar una solicitud a un sitio web a través de la biblioteca de solicitudes y usar la IP del proxy para enviar la solicitud. Si la solicitud tiene éxito, significa que la IP del proxy está disponible; si la solicitud falla, significa que la IP del proxy no está disponible. A continuación se muestra un ejemplo:

import requests

proxies = {'http': 'http://123.56.74.156:80'}

# 设置headers,模拟浏览器访问
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.3'}

# 发送请求,使用代理IP进行访问
response = requests.get('http://httpbin.org/ip', headers=headers, proxies=proxies)

# 如果请求成功,则表明该代理IP可用;如果请求失败,则表明该代理IP不可用
if response.status_code == 200:
    print('可用')
else:
    print('不可用')

El código anterior utilizará la IP del proxy 123.56.74.156:80 para enviar una solicitud a httpbin.org y determinará si la IP del proxy está disponible según el código de estado devuelto.

4. Cómo utilizar la biblioteca Pandas para mantener el grupo de IP del proxy

Durante el proceso de rastreo, generalmente utilizamos un grupo de IP proxy para evitar ser bloqueados. El grupo de IP de proxy puede contener varias IP de proxy y se puede seleccionar aleatoriamente una IP de proxy para acceder. En este proceso, podemos utilizar la biblioteca Pandas para mantener el grupo de IP del proxy.

Al mantener el grupo de IP del proxy, debemos obtener periódicamente la IP del proxy del sitio web de IP del proxy y verificarla. Si hay una IP de proxy disponible, agréguela al grupo de IP de proxy; si una IP de proxy no está disponible, elimínela del grupo de IP de proxy. A continuación se muestra un ejemplo:

import requests
import pandas as pd
import time

# 设置代理IP池

# 理IP池的最大长度
MAX_PROXY_NUM = 100

# 代理IP池
proxy_pool = []

# 获取代理IP并验证,如果可用则加入代理IP池中
def get_and_verify_proxy(url):
    try:
        # 设置headers,模拟浏览器访问
        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.3'}

        # 发送请求,获取代理IP
        response = requests.get(url, headers=headers)
        dfs = pd.read_html(response.text)

        # 将DataFrame格式的数据转换成列表格式
        data = dfs[0].values.tolist()

        # 将获取的代理IP逐个进行验证
        for i in range(len(data)):
            protocol = data[i][4].lower()  # 协议类型(http/https)
            ip = data[i][0]  # IP地址
            port = data[i][1]  # 端口号
            proxies = {protocol: f'{protocol}://{ip}:{port}'}

            # 发送请求,使用代理IP进行访问
            response = requests.get('http://httpbin.org/ip', headers=headers, proxies=proxies, timeout=5)

            # 如果请求成功,则表明该代理IP可用;如果请求失败,则表明该代理IP不可用
            if response.status_code == 200:
                proxy = {'protocol': protocol, 'ip': ip, 'port': port}
                if proxy not in proxy_pool:
                    proxy_pool.append(proxy)
                    print(f'Add proxy: {proxy}, current length: {len(proxy_pool)}')
                    if len(proxy_pool) > MAX_PROXY_NUM:
                        proxy_pool.pop(0)
            else:
                continue

    except:
        pass

while True:
    url = 'http://www.xicidaili.com/nn'
    get_and_verify_proxy(url)
    time.sleep(30)

El código anterior obtendrá periódicamente la IP del proxy del sitio web y luego la verificará. Si hay una IP de proxy disponible, agréguela al grupo de IP de proxy; si una IP de proxy no está disponible, elimínela del grupo de IP de proxy. Al mismo tiempo, también configuramos la longitud máxima de un grupo de IP de proxy. Si la longitud del grupo de IP de proxy excede la longitud máxima, se eliminará la IP de proxy más antigua agregada.

5. Cómo utilizar la biblioteca Pandas para guardar el grupo de IP del proxy en la base de datos MySQL

En el proceso de mantenimiento del grupo de IP del proxy, generalmente necesitamos guardar el grupo de IP del proxy en la base de datos para usarlo en operaciones posteriores. En este proceso, podemos usar la biblioteca Pandas para guardar el grupo de IP del proxy en la base de datos MySQL.

Primero, necesitamos instalar la biblioteca pymysql para conectarnos a la base de datos MySQL. Se puede instalar usando el comando pip:

pip install pymysql
```

安装完成后,就可以使用pymysql库来连接MySQL数据库了。下面是一个例子:

```python
import pymysql

# 连接MySQL数据库
def connect_mysql():
    conn = pymysql.connect(
        host='localhost',  # 数据库所在主机地址
        user='root',  # 登录数据库的用户名
        password='password',  # 登录数据库的密码
        database='proxy',  # 数据库名称
        charset='utf8mb4'  # 数据库编码格式
    )

    return conn

# 将代理IP池保存至MySQL数据库中
def save_proxy_to_mysql():
    conn = connect_mysql()

    # 将代理IP池转换成DataFrame格式
    df = pd.DataFrame(proxy_pool)

    # 将DataFrame格式的数据保存至MySQL数据库中
    df.to_sql('proxy', conn, index=False, if_exists='replace')

    # 关闭数据库连接
    conn.close()

save_proxy_to_mysql()

El código anterior convertirá el grupo de IP del proxy al formato DataFrame y luego guardará los datos en formato DataFrame en una tabla MySQL llamada proxy. Si la tabla proxy ya existe, primero se eliminará y luego se creará una nueva tabla y se insertarán los datos.

6. Resumen

En este artículo, presentamos cómo utilizar la biblioteca Pandas para implementar la adquisición y verificación automática de IP de proxy, así como el mantenimiento de grupos de IP de proxy. Específicamente, explicamos cómo usar la biblioteca Pandas para analizar datos de páginas web en HTML, XML, JSON y otros formatos, cómo usar la biblioteca Pandas para obtener la IP del proxy y verificarla, cómo usar la biblioteca Pandas para mantener el proxy. Grupo de IP y cómo utilizar la biblioteca Pandas Guarde el grupo de IP del proxy en la base de datos MySQL. A través de la explicación de este artículo, creo que los lectores han dominado las habilidades de cómo usar la biblioteca Pandas para obtener rápidamente la IP del proxy y verificarla. Espero que este artículo pueda ayudar a todos a encontrar problemas durante el proceso de rastreo.

Supongo que te gusta

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