Chino simplificado | Inglés
Herramienta de extracción de enlaces/recopilación de trabajos de Xiaohongshu : extrae publicaciones de cuentas, colecciones, me gusta y enlaces de trabajos de álbumes; extrae enlaces de trabajos de resultados de búsqueda y enlaces de usuarios; extrae direcciones de descarga de trabajos de Xiaohongshu;
Este proyecto es completamente gratuito y de código abierto, sin funciones pagas, ¡no se deje engañar!
El plan de desarrollo y el progreso de XHS-Downloader se pueden encontrar en Proyectos
? Haga clic en la imagen para ver el vídeo de demostración
https://www.xiaohongshu.com/explore/作品ID?xsec_token=XXX
https://www.xiaohongshu.com/discovery/item/作品ID?xsec_token=XXX
https://xhslink.com/分享码
Admite la introducción de múltiples enlaces de trabajo a la vez, utilizando espacios para separar enlaces, ¡el programa extraerá automáticamente enlaces válidos sin procesamiento adicional!
¡Se recomienda utilizar la Terminal de Windows (terminal predeterminada de Windows 11) para ejecutar el programa y obtener el mejor efecto de visualización!
Si solo necesita descargar los archivos de trabajo sin marcas de agua, se recomienda elegir el programa en ejecución o Docker en ejecución ; si tiene otras necesidades, se recomienda elegir el código fuente en ejecución ;
A partir de la versión 2.2
, si no hay anomalías en la función del proyecto, ¡no es necesario procesar cookies adicionales!
Los usuarios de Mac OS, Windows 10 y superiores pueden ir a Versiones para descargar el paquete comprimido del programa, descomprimirlo, abrir la carpeta del programa y hacer doble clic para ejecutar main
y usarlo.
Nota: Es posible que sea necesario iniciar el archivo ejecutable main
de la plataforma Mac OS desde la línea de comando del terminal; debido a limitaciones del dispositivo, el archivo ejecutable de la plataforma Mac OS no se ha probado y no se puede garantizar su disponibilidad.
Si utiliza el programa de esta manera, la ruta de descarga del archivo predeterminada es: ._internalDownload
la ruta del archivo de configuración es: ._internalsettings.json
Dockerfile
para crear la imagendocker pull joeanamier/xhs-downloader
para extraer la imagendocker run -it joeanamier/xhs-downloader
docker run -it joeanamier/xhs-downloader python main.py server
docker start -i 容器名称/容器ID
docker restart -i 容器名称/容器ID
Docker no admite el modo de llamada de línea de comando cuando se ejecuta el proyecto. Las funciones de leer el portapapeles y monitorear el portapapeles no se pueden usar. Si hay alguna anomalía en otras funciones, infórmelo.
3.12
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
para instalar los módulos requeridos por el programamain.py
para usarEl proyecto admite el modo de operación de línea de comandos. Si desea descargar algunas imágenes de obras gráficas, puede usar este modo para configurar el número de serie de las imágenes que se descargarán.
¡Las cookies se pueden leer desde el navegador y escribir en el archivo de configuración usando la línea de comando!
Ejemplo de comando: python .main.py --browser_cookie Chrome --update_settings
Los parámetros de tipo bool
admiten la configuración usando true
, false
, 1
, 0
, yes
, no
, on
o off
(no distingue entre mayúsculas y minúsculas).
Inicio: Ejecutar comando: python .main.py server
Apagar: Presione Ctrl
+ C
para apagar el servidor
Interfaz de solicitud: /xhs/
Método de solicitud: POST
Formato de solicitud: JSON
Parámetros de solicitud:
parámetro | tipo | significado | valor predeterminado |
---|---|---|---|
URL | cadena | Los enlaces a las obras de Xiaohongshu se extraen automáticamente y no se admiten enlaces múltiples. | ninguno |
descargar | booleano | Si descargar el archivo de trabajo o establecerlo en true llevará más tiempo. | FALSO |
índice | lista[int] | La descarga del archivo de imagen con el número de serie especificado solo tendrá efecto para trabajos gráficos y no tendrá efecto cuando el parámetro download esté configurado en false | nulo |
saltar | booleano | Si se omiten trabajos con registros de descarga; si se establece en true no se devolverán datos para trabajos con registros de descarga. | FALSO |
Ejemplo de código:
def api_demo(): servidor = "http://127.0.0.1:8000/xhs/" datos = { "url": "https://www.xiaohongshu.com/explore/123456789", "descargar": Verdadero, "índice": [ 3, 6, 9, ], } respuesta = solicitudes.post(servidor, json=datos) imprimir (respuesta.json())
Si su navegador tiene instalada la extensión de navegador Tampermonkey, puede agregar scripts de usuario y experimentar las funciones del proyecto sin descargarlos ni instalarlos.
Una vez que el script se haya instalado correctamente, abra la página de Xiaohongshu, vea las instrucciones del script y siga las indicaciones.
Consejo: Utilice el script de usuario XHS-Downloader para extraer enlaces de trabajo en lotes y utilice el programa XHS-Downloader para descargar archivos de trabajo por lotes sin marcas de agua.
Si tiene otras necesidades, puede llamar o modificar el código de acuerdo con las indicaciones de comentarios en main.py
ejemplo de definición asíncrona(): """Establece parámetros a través del código, adecuado para desarrollo secundario""" # Enlace de muestra error_link = "https://github.com/JoeanAmier/XHS_Downloader" demo_link = "https://www.xiaohongshu.com/explore/xxxxxxxxxx" múltiples_enlaces = f"{demo_link} {demo_link} {demo_link}" # Objeto de instancia work_path = "D:\" # La ruta raíz para guardar datos/archivos de trabajo, valor predeterminado: ruta raíz del proyecto nombre_carpeta = "Descargar" # El nombre de la carpeta de almacenamiento de archivos de trabajo (creada automáticamente), valor predeterminado: Descargar name_format = "Título del trabajo Descripción del trabajo" user_agent = "" # Usuario-Agente cookie = "" # Cookie de versión web de Xiaohongshu, no es necesario iniciar sesión, parámetros opcionales, el estado de inicio de sesión tiene un impacto en el proxy de recopilación de datos = Ninguno # Tiempo de espera del proxy de red = 5 # Límite de tiempo de espera de datos de solicitud, unidad: segundos, valor predeterminado: 10 chunk = 1024 * 1024 * 10 # Al descargar un archivo, el tamaño del bloque de datos obtenido del servidor cada vez, unidad: bytes max_retry = 2 # Cuando falla la solicitud de datos, el número máximo de reintentos, unidad: segundos, valor predeterminado : 5 record_data = False # Si se guardan los datos de trabajo en el archivo image_format = "WEBP" # Formato de descarga de archivos de trabajo de texto y gráficos, compatible con: PNG, WEBP carpeta_mode = False # Si se deben almacenar los archivos de cada trabajo en una carpeta separada # async con XHS() como xhs: # pasar # Usar parámetros predeterminados asíncronos con XHS ( ruta_trabajo=ruta_trabajo, nombre_carpeta=nombre_carpeta, formato_nombre=formato_nombre, agente_usuario=agente_usuario, galleta = galleta, apoderado = apoderado, tiempo de espera = tiempo de espera, trozo = trozo, max_retry=max_retry, datos_registro=datos_registro, formato_imagen=formato_imagen, modo_carpeta=modo_carpeta, ) como xhs: # Usar descarga de parámetros personalizados = Verdadero # Si se descarga el archivo de trabajo, valor predeterminado: Falso # Devuelve información detallada sobre el trabajo, incluida la dirección de descarga # Devuelve un diccionario vacío cuando falla la obtención de datos print(await xhs.extract(error_link, download, )) imprimir (espera xhs.extract (demo_link, descargar, índice = [1, 2])) # Admite la transferencia de múltiples enlaces de trabajo print(await xhs.extract(multiple_links, download,))
El proyecto utiliza pyperclip
para implementar la función de lectura del portapapeles. Este módulo variará en diferentes sistemas.
En Windows, no se requieren módulos adicionales.
En Mac, este módulo utiliza los comandos pbcopy y pbpaste, que deben proporcionarse con el sistema operativo.
En Linux, este módulo utiliza los comandos xclip o xsel, que deben proporcionarse con el sistema operativo. De lo contrario, ejecute "sudo apt-get install xclip" o "sudo apt-get install xsel" (nota: xsel no siempre parece funcionar)
En otros sistemas Linux, necesita instalar el módulo qtpy o PyQT5.
El archivo settings.json
en el directorio raíz del proyecto se genera automáticamente cuando se ejecuta por primera vez y algunos parámetros de ejecución se pueden personalizar.
Si se establece un valor de parámetro no válido, el programa utilizará el valor predeterminado del parámetro.
parámetro | tipo | significado | valor predeterminado |
---|---|---|---|
ruta_trabajo | cadena | Ruta raíz para guardar datos/archivos de trabajo | Ruta raíz del proyecto |
nombre_carpeta | cadena | El nombre de la carpeta donde se almacenan los archivos de trabajo. | Descargar |
formato_nombre | cadena | Formato de nombre de archivo de trabajo, use espacios para separar los campos admitidos:收藏数量 ,评论数量 ,分享数量 点赞数量 ,作品标签 ,作品ID ,作品标题 ,作品描述 ,作品类型 ,发布时间 ,最后更新时间 ,作者昵称 ,作者ID | 发布时间作者昵称作品标题 |
agente_usuario | cadena | Agente de usuario del navegador | Agente de usuario de Chrome integrado |
galletas | cadena | Cookie de versión web de Xiaohongshu, no es necesario iniciar sesión, no se requieren parámetros. | ninguno |
apoderado | cadena | Proxy del programa de instalación | nulo |
se acabó el tiempo | entero | Solicitar límite de tiempo de espera de datos, unidad: segundos | 10 |
pedazo | entero | Al descargar un archivo, el tamaño del bloque de datos obtenido del servidor cada vez, unidad: bytes | 2097152(2MB) |
max_reintento | entero | Cuando falla la solicitud de datos, el número máximo de reintentos, unidad: segundos | 5 |
datos_registro | booleano | Ya sea para guardar los datos de trabajo en un archivo, formato de guardado: SQLite | FALSO |
formato_imagen | cadena | Formato de descarga de archivos de trabajo gráfico y de texto, compatible con: PNG , WEBP ¡Este parámetro afecta la interfaz utilizada al descargar imágenes y no es un formato de imagen fijo! | PNG |
descargar_imagen | booleano | Interruptor de descarga de archivos de trabajo gráfico | verdadero |
descarga_video | booleano | Interruptor de descarga de archivos de trabajo de vídeo | verdadero |
descarga_en vivo | booleano | Interruptor de descarga de archivos gráficos, de texto y de animación. | FALSO |
modo_carpeta | booleano | Si se deben almacenar los archivos de cada trabajo en una carpeta separada, el nombre de la carpeta debe ser coherente con el nombre del archivo; | FALSO |
descargar_registro | booleano | Si se debe registrar el ID de las obras descargadas correctamente. Si está activado, el programa omitirá automáticamente la descarga de obras con registros existentes. | verdadero |
idioma | cadena | Establezca el idioma del programa, actualmente admitido: zh_CN , en_GB | zh_CN |
Otras instrucciones: Ejemplo de cómo obtener el parámetro user_agent
; ¡se recomienda configurarlo de acuerdo con la información real del navegador!
A partir de la versión 2.2
, si no hay anomalías en la función del proyecto, ¡no es necesario procesar cookies adicionales!
https://www.xiaohongshu.com/explore
F12
para abrir las herramientas de desarrollador网络
保留日志
cookie-name:web_session
en el cuadro de entrada过滤
Fetch/XHR
网络
(si no hay ningún paquete, repita el paso 7)XHS-Downloader almacenará la ID del trabajo descargado en la base de datos. Al descargar el mismo trabajo repetidamente, XHS-Downloader omitirá automáticamente la descarga del archivo del trabajo (incluso si el archivo de trabajo no existe si desea descargarlo). el archivo de trabajo nuevamente. Primero elimine la ID de trabajo correspondiente en la base de datos y luego use XHS-Downloader para descargar el archivo de trabajo.
Esta función está habilitada de forma predeterminada. Si está deshabilitada, XHS-Downloader verificará si el archivo existe y omitirá la descarga si el archivo existe.
Si XHS-Downloader le resulta útil, considere darle una estrella . ¡Gracias por su apoyo!
alipay | |
---|---|
Si lo desea, considere financiar soporte adicional para XHS-Downloader .
Nota: El chat grupal de QQ se limita a discutir problemas de uso del proyecto. Está estrictamente prohibido publicar anuncios y está estrictamente prohibido discutir transacciones de cuentas, tráfico de cuentas, monetización del tráfico, industrias grises y otro contenido relacionado.
Otros proyectos de código abierto del autor:
JetBrains apoya proyectos activos reconocidos por la comunidad global de código abierto y proporciona licencias gratuitas para desarrollo no comercial.