Coincidencia regular del rastreador Python para guardar imágenes de páginas web


Lo que solo proporciono aquí es un método. Hay muchas páginas web con mecanismos anti-rastreador. Mi código no se aplica a todas las páginas web (la búsqueda de imágenes de Baidu no funciona).

1. Introducción

1.1 Rastreador

Un rastreador se refiere a un programa que simula una visita humana a un sitio web y rastrea su contenido. Por lo general, un programa de rastreo consta de las siguientes partes:

  1. Obtener contenido de la página web: el programa rastreador necesita simular solicitudes HTTP, enviar solicitudes al sitio web de destino y obtener el contenido de la página web.

  2. Analizar el contenido de la página web: el programa rastreador necesita analizar el contenido de la página web adquirido y extraer la información requerida, que puede incluir texto, imágenes, videos, enlaces, etc.

  3. Almacenamiento de datos: el programa rastreador necesita almacenar los datos adquiridos localmente o en una base de datos para su análisis y procesamiento.

El programa rastreador generalmente se puede dividir en los siguientes pasos:

  1. Determine los sitios web de destino para rastrear.

  2. Analice la estructura de la página web del sitio web de destino y comprenda las reglas de URL y el formato de datos del sitio web.

  3. Escriba un programa de rastreo para simular solicitudes HTTP, obtener contenido de la página web y analizar los datos requeridos.

  4. Procese los datos rastreados y guárdelos localmente o en una base de datos.

Cabe señalar que los programas de rastreo deben cumplir con las reglas, leyes y regulaciones de acceso al sitio web, y no pueden realizar ataques maliciosos al sitio web ni infringir la privacidad de otras personas. Además, para evitar sobrecargar el servidor del sitio web de destino, el programa rastreador debe establecer una frecuencia y un intervalo de acceso razonables.

1.2 Lenguaje reptil

Los rastreadores se pueden desarrollar utilizando una variedad de lenguajes de programación, los más comunes incluyen:

  1. Python: Python es actualmente uno de los lenguajes de programación de rastreadores más utilizados y tiene las ventajas de simplicidad y facilidad de aprendizaje, ecología rica y numerosas bibliotecas.

  2. Java: Java es un lenguaje de programación de propósito general que también se puede utilizar para desarrollar programas de rastreo. Aunque Java es un poco detallado, su estabilidad y capacidades multiplataforma sobresalen en el campo de los rastreadores.

  3. JavaScript: JavaScript se usa comúnmente para el desarrollo front-end, pero también se puede usar para desarrollar rastreadores. La ventaja de JavaScript es que se ejecuta en el entorno del navegador y puede obtener contenido generado dinámicamente desde la página.

  4. Ruby: Ruby es un lenguaje de programación elegante, fácil de leer, escribir y orientado a objetos, que también se puede utilizar para desarrollar programas de rastreo.

  5. Go: Go es un lenguaje de programación emergente, que por su simplicidad, facilidad de uso y eficiencia también ha comenzado a utilizarse paulatinamente en el campo de la programación sobre rastreadores.

Los diferentes lenguajes de programación tienen diferentes características, ventajas y desventajas, y al elegir, debes considerar tus necesidades reales y preferencias personales.

1.3 biblioteca de Python

Las bibliotecas utilizadas por los rastreadores de Python son muy ricas. Las siguientes son algunas bibliotecas de rastreadores de uso común:

  1. Solicitudes: se utiliza para enviar solicitudes HTTP y devolver los datos correspondientes. Es una de las bibliotecas más populares de Python.

  2. Beautiful Soup: se utiliza para analizar documentos HTML y XML y puede extraer datos fácilmente de páginas web.

  3. Scrapy: un marco de rastreo avanzado basado en Python que se puede utilizar para rastrear grandes cantidades de datos.

  4. Selenio: se utiliza para simular el comportamiento del navegador, puede simular clics, entradas y otras operaciones, y obtener datos automáticamente.

  5. Pandas: utilizado para el procesamiento y análisis de datos, los datos capturados se pueden organizar en forma tabular para su análisis.

  6. Pyquery: se utiliza para analizar documentos HTML y XML, tiene una sintaxis similar a jQuery y puede extraer datos fácilmente de páginas web.

  7. Textract: se utiliza para extraer texto y datos de tablas, y puede reconocer automáticamente formatos de documentos como PDF, Word, Excel, etc.

  8. Scikit-learn: se utiliza para aplicaciones relacionadas con el aprendizaje automático, que pueden clasificar y agrupar los datos capturados.

Las bibliotecas anteriores son solo algunas de las más utilizadas. Al utilizarlas, debe elegir la biblioteca adecuada según las necesidades reales.

1.4 Mis pasos

  1. Importar los paquetes a usar.
  2. Pruebe si desea leer la página web
  3. Ver el código fuente de la página web para escribir coincidencias regulares
  4. Abra una imagen y pruebe a guardarla.
  5. Combínalos, combínalos uno por uno y guárdalos en una carpeta.

2. Importar paquete

2.1 Código

import os
import requests
import webbrowser
import sys
import cv2
import re

2.2 biblioteca de solicitudes

La biblioteca que uso es de solicitudes.

Requests es una biblioteca de solicitudes HTTP muy popular en Python, que se utiliza para enviar solicitudes HTTP y obtener respuestas. Proporciona una API simple y fácil de usar que puede enviar fácilmente solicitudes GET, POST, PUT y otras. También puede agregar encabezados de solicitud, enviar cookies, etc. El siguiente es el uso básico de la biblioteca de Solicitudes:

  1. Instale la biblioteca de solicitudes: ingrese las solicitudes de instalación de pip en la línea de comando para instalarla.

  2. Importe la biblioteca de solicitudes: utilice solicitudes de importación en el archivo Python para importar la biblioteca.

  3. Envíe solicitudes HTTP: use request.get(url) para enviar solicitudes GET, use request.post(url, datos) para enviar solicitudes POST. Entre ellos, URL es la URL solicitada y datos son el parámetro de solicitud.

  4. Obtenga la respuesta: use Response.text para obtener el contenido de la respuesta y use Response.status_code para obtener el código de estado de la respuesta.

  5. Agregar encabezados de solicitud: utilice el parámetro de encabezados para agregar encabezados de solicitud, como request.get(url, headers=headers).

  6. Enviar cookies: utilice parámetros de cookies para agregar cookies, como request.get(url, cookies=cookies).

  7. Configuración de tiempo de espera: utilice el parámetro de tiempo de espera para configurar el tiempo de espera, como request.get (url, timeout = 5).

El siguiente es un ejemplo del uso de Solicitudes para enviar una solicitud GET:

import requests

response = requests.get('https://www.baidu.com')
print(response.text)

El código anterior enviará una solicitud GET a la página de inicio de Baidu, obtendrá el contenido de la respuesta y lo imprimirá. Tenga en cuenta que respuesta.text aquí es el método para obtener el contenido de la respuesta. Si desea obtener datos binarios, puede utilizar Response.content.

3. Función de escritura de archivo

Código:

# 写入文件函数
def down_pic(url, filename):
   #定义一个函数,用于下载网络图片,参数url为图片对应的url地址,filename为爬取图片名字
    r = requests.get(url) # 获取网页内容
    path = './picture' # 爬取图片待存储目录
    if not os.path.exists(path): # 判断桌面是否有一个名称为“图片”的文件夹,如果没有,就创建它
        os.mkdir(path)    # 爬取图片
    with open(path + '\\' + filename, 'wb') as f:     
        f.write(r.content) # 以二进制形式写入文件   
        f.close # 关闭文件

La URL aquí no es la dirección de una página web, sino la dirección de una imagen.
Podemos abrir una página web que contenga imágenes.
Página web

Haga clic derecho en un espacio vacío para inspeccionar o presione Ctrl+shift+I
examinar

Seleccione la imagen que desea ver
imagen

Copiar dirección
Copiar

Abra una nueva página web. En la parte superior, ingrese esta dirección e ingrese la dirección. La dirección
ingresar
Ingresar
aquí es la dirección de la página web
. Haga clic derecho para seleccionar la dirección para guardar, ¡jeje! ! !

4. Consigue fotografías

Código:

def get_web(url):
    header={
    
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36',
        'Cookie':'*****'#cookie需要你先自己在浏览器登录百度账号,再按f12就有了
        'Accept':'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8',
        'Accept-Encoding':'gzip, deflate, br',
        'Accept-Language':'zh-CN,zh;q=0.9'}
    response = requests.get(url,headers=header)
    # print(response)
    # print(response.content.decode())
    text = response.content.decode() # 获取文档
    # 存一下看看
    path = "./text.html"
    file = open(path,'w',encoding="utf-8")
    file.write(text)
    file.close()
    # 接下来进行正则匹配
    r = r"data-original=\"(.*?)\""
    fill = re.findall(r,text)
    print(fill[0])
    # 命名
    a = ""
    for i in range(len(fill)):
        url = "https:" + fill[i]
        a = str(i) +".jpg"
        down_pic(url,a)
        a = ""

En la página que desea rastrear, presione Ctrl+Mayús+I para verificar la barra de la consola, ingrese alerta(document.cookie)
para obtener su cookie.

En este código, guardo el texto obtenido en un archivo html para verlo fácilmente.

La parte más importante es la coincidencia regular . Puede considerar el método de coincidencia de direcciones de imágenes al ver el documento.

5. Función principal

5.1 Código

if __name__ == '__main__':
    url = 'https://sc.chinaz.com/tupian/gudianmeinvtupian.html' # 图片对应的url地址
    # webbrowser.open(url)  # 打开网页
    # 获取文件文档,然后匹配文件
    get_web(url)

La página web que estoy rastreando aquí es un sitio web de descarga gratuita que contiene imágenes. No lo he probado en otros sitios web.
https://sc.chinaz.com/tupian/gudianmeinvtupian.html
imagen

5.2 Explicar el navegador web

webbrowser es la biblioteca estándar incorporada de Python, que se puede utilizar para abrir una URL específica en el navegador predeterminado. El método webbrowser.open (url) recibe un parámetro de URL, que abrirá automáticamente el navegador predeterminado del sistema y abrirá la URL especificada en él.

He aquí un ejemplo:

import webbrowser

url = "https://www.baidu.com"
webbrowser.open(url)

Después de ejecutar el código anterior, el navegador predeterminado del sistema abrirá la página de inicio de Baidu. Si hay varios navegadores en el sistema, se abrirá el navegador predeterminado.

La biblioteca del navegador web también proporciona otros métodos, como open_new() y open_new_tab(), que se utilizan para abrir URL en nuevas ventanas y nuevas pestañas, respectivamente. Por ejemplo:

import webbrowser

url = "https://www.baidu.com"
webbrowser.open_new_tab(url)

Después de ejecutar el código anterior, el navegador predeterminado del sistema abrirá la página de inicio de Baidu en una nueva pestaña.

6. Todo el código

'''
Descripttion: 存储网络上的图片,算是做了一些吧
version: 版本
Author: YueXuanZi
Date: 2023-05-30 14:52:30
LastEditors: YueXuanZi
LastEditTime: 2023-05-31 20:53:50
Experience: 心得体会
'''
import os
import requests
import webbrowser
import sys
import cv2
import re
# 写入文件函数
def down_pic(url, filename):
   #定义一个函数,用于下载网络图片,参数url为图片对应的url地址,filename为爬取图片名字
    r = requests.get(url) # 获取网页内容
    path = './picture' # 爬取图片待存储目录
    if not os.path.exists(path): # 判断桌面是否有一个名称为“图片”的文件夹,如果没有,就创建它
        os.mkdir(path)    # 爬取图片
    with open(path + '\\' + filename, 'wb') as f:     
        f.write(r.content) # 以二进制形式写入文件   
        f.close # 关闭文件

def get_web(url):
    header={
    
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36',
        'Cookie':'***',#cookie需要你先自己在浏览器登录百度账号,再按f12就有了
        'Accept':'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8',
        'Accept-Encoding':'gzip, deflate, br',
        'Accept-Language':'zh-CN,zh;q=0.9'}
    response = requests.get(url,headers=header)
    # print(response)
    # print(response.content.decode())
    text = response.content.decode() # 获取文档
    # 存一下看看
    path = "./text.html"
    file = open(path,'w',encoding="utf-8")
    file.write(text)
    file.close()
    # 接下来进行正则匹配
    r = r"data-original=\"(.*?)\""
    fill = re.findall(r,text)
    print(fill[0])
    a = ""
    for i in range(len(fill)):
        url = "https:" + fill[i]
        a = str(i) +".jpg"
        down_pic(url,a)
        a = ""

if __name__ == '__main__':
    url = 'https://sc.chinaz.com/tupian/gudianmeinvtupian.html' # 图片对应的url地址
    # webbrowser.open(url)  # 打开网页
    # 获取文件文档,然后匹配文件
    get_web(url)

7. Otros (pueden ignorarse)

No se trata solo de aprender rastreadores, hazlo cuando tengas una idea y resuelve las dificultades cuando las encuentres. Pruébalo más, jajajajaja.
Piense en ello como si estuviera jugando un juego usted mismo, sienta el placer de tocar el teclado y disfrute de una lluvia de ideas.
Esta es una experiencia muy importante y cuanto más exposición tengas, más interesante será.

8. Resumen

Todo va bastante bien, todo está bien. CSDN básicamente tiene lo que quiero encontrar, y siempre hay más métodos que dificultades. Todavía estoy pensando si debería aprender a usar JAVA o JavaScript y otros lenguajes para rastrear. en el futuro, jajajaja. Aprendí rastreadores porque no tenía material para realizar experimentos de visión artificial o aprendizaje automático. Más tarde descubrí que los conjuntos de datos recopilados por personas en Internet no eran tan buenos. Piensa en ello como una experiencia, jajajaja.


Finalmente, pongamos la foto al principio aquí, todos pueden comunicarse en el área de comentarios.

mujer

Supongo que te gusta

Origin blog.csdn.net/weixin_51395608/article/details/131184277
Recomendado
Clasificación