[Jugar con la serie python] [Imprescindible para Xiaobai] Utilice la tecnología de rastreo de Python para obtener una IP proxy y guardarla en un archivo

inserte la descripción de la imagen aquí

prefacio

Este artículo presenta cómo usar la tecnología de rastreo de Python para obtener una IP de proxy y guardarla en un archivo. Mediante el uso de solicitudes de biblioteca de terceros para enviar solicitudes HTTP y el uso de la biblioteca lxml para analizar HTML, podemos obtener información de IP, puerto y dirección de varias páginas web. Este artículo analizará cada parte del código paso a paso para ayudar a los lectores a comprender mejor cómo funciona el rastreador.

Importar bibliotecas dependientes

inserte la descripción de la imagen aquí

import requests
from lxml import etree

Importe requestsla biblioteca para enviar solicitudes HTTP y lxmlla biblioteca para analizar HTML.

Abra el archivo listo para escribir datos.

inserte la descripción de la imagen aquí

with open('IP代理.txt','w',encoding='utf-8') as f:

Utilice openla función para crear un objeto de archivo f, especifique el nombre del archivo 'IP代理.txt'y abra el archivo en modo de escritura. La codificación está establecida en 'utf-8'.

Bucle para rastrear varias páginas

inserte la descripción de la imagen aquí

for i in range(1,10):
    url = f'http://www.66ip.cn/{
      
      i}.html'
    print(f'正在获取{
      
      url}')
    headers = {
    
    
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
    }
    resp = requests.get(url,headers = headers)
    resp.encoding ='gbk'
    e = etree.HTML(resp.text)
    ips = e.xpath('//div[1]/table//tr/td[1]/text()')
    ports = e.xpath('//div[1]/table//tr/td[2]/text()')
    addrs = e.xpath('//div[1]/table//tr/td[3]/text()')

    for i,p,a in zip(ips,ports,addrs):
        f.write(f'IP地址:{
      
      i}----port端口号:{
      
      p}-----地址:{
      
      a}\n')

Esta parte del código utiliza un bucle para rastrear la información del proxy de varias páginas. La variable de bucle iva de 1 a 9. Para cada página, primero se construye la URL completa: http://www.66ip.cn/{i}.html, donde {i}es el número de página de la página. Luego, use printla función para imprimir la URL de la página que se busca.

A continuación, para disfrazar su propio navegador, headersse define un diccionario que contiene la información del agente de usuario del navegador.

Envíe una solicitud GET a través requestsde la biblioteca, utilizando headersla información del User-Agent en el diccionario. El contenido de la respuesta obtenida se guarda en respla variable.

Establezca la codificación de la respuesta 'gbk'porque el sitio web de destino utiliza la codificación GBK.

Analice el contenido de la respuesta en un objeto HTML operable y asígnelo a una variable e, utilizando la función lxmlde la biblioteca etree.HTML.

Extraiga una lista de direcciones IP, puertos y direcciones de un objeto HTML a través de una expresión XPath. La lista de IP se almacena en ips, la lista de puertos se almacena en portsy la lista de direcciones se almacena addrsen .

Use zipla función para empaquetar las tres listas una por una y luego use forel bucle para recorrer los datos empaquetados. En el ciclo, use el método fdel objeto de archivo writepara escribir cada pieza de información de proxy en el archivo, y el formato de escritura es 'IP地址:{i}----port端口号:{p}-----地址:{a}\n'.

La función de todo el código es rastrear la información de IP, puerto y dirección en varias páginas web y guardar los resultados en un 'IP代理.txt'archivo llamado .

código completo

import requests
from lxml import etree

# 定义保存结果的文件
with open('IP代理.txt', 'w', encoding='utf-8') as f:
    # 循环爬取多个页面
    for i in range(1, 10):
        # 构造完整的URL
        url = f'http://www.66ip.cn/{
      
      i}.html'
        print(f'正在获取{
      
      url}')

        # 伪装浏览器请求头
        headers = {
    
    
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
        }

        # 发送GET请求
        resp = requests.get(url, headers=headers)

        # 设置响应的编码为GBK
        resp.encoding = 'gbk'

        # 解析HTML
        e = etree.HTML(resp.text)

        # 提取IP、Port和地址信息
        ips = e.xpath('//div[1]/table//tr/td[1]/text()')
        ports = e.xpath('//div[1]/table//tr/td[2]/text()')
        addrs = e.xpath('//div[1]/table//tr/td[3]/text()')

        # 将提取的代理信息写入文件
        for ip, port, addr in zip(ips, ports, addrs):
            f.write(f'IP地址:{
      
      ip}----port端口号:{
      
      port}-----地址:{
      
      addr}\n')

resultado de ejecución

inserte la descripción de la imagen aquí

conclusión

A través de la tecnología de rastreo de Python presentada en este artículo, puede obtener fácilmente la IP del proxy y guardarla en un archivo. Esto es muy útil para la recopilación de datos, el procesamiento anti-rastreador u otras aplicaciones de rastreadores web que necesitan usar una IP de proxy. Espero que este artículo pueda ayudarlo a comprender mejor el principio de funcionamiento de los rastreadores y desempeñar un papel en proyectos reales.

Supongo que te gusta

Origin blog.csdn.net/qq_33681891/article/details/132003374
Recomendado
Clasificación