Rastreador de Python, extracción ultra simple con un clic de pinturas originales de Onmyoji

xpath: ejemplo de reptil simple: extrae el fondo de pantalla original de Onmyoji

I. Introducción

Mucha gente ha jugado con Onmyoji, aparte de cualquier otra cosa, las pinturas originales hechas por Onmyoji son bastante detalladas. En mi tiempo libre, puedo rastrearlas con unas simples líneas de código. ¿No es hermoso?

En segundo lugar, las bibliotecas que deben usarse

import requests
from lxml import etree
from fake_useragent import UserAgent
import os

Para aquellos que no usan la biblioteca de instalación, pueden echar un vistazo a este artículo que escribí antes. Hay muchos enlaces a fuentes nacionales para su descarga.

Portal

Tres, el proceso de realización

1. Analizar páginas web

Primero abra el sitio web oficial, el portal del sitio web oficial , haga clic en el " fondo de pantalla original " en el " centro audiovisual "
Inserte la descripción de la imagen aquí

Después de ingresar a la página de fondo de pantalla original , seleccione un fondo de pantalla y verifíquelo.

Inserte la descripción de la imagen aquí
Descubrí que hay diferentes enlaces para diferentes resoluciones, y la imagen que verifiqué tiene seis resoluciones. ¿Es igual para todas las imágenes?
¡Entonces descubrí que no lo es!
Inserte la descripción de la imagen aquí
Como se muestra arriba, hay incluso una imagen con solo cuatro resoluciones, y la posición de resolución de cada imagen no es consistente ¿Cómo extraer el enlace de la imagen original?

A: use xpath para extraer nodos basados ​​en contenido de texto

a = lists[i].xpath('./div/div/a[contains(text(), "1920x1080")]')[0]

De esta forma se puede extraer un nodo con una resolución de "1920 x 1080".

P: lists[i]¿Qué es?
R: Lo sabrá después de leer el código completo.

Inserte la descripción de la imagen aquí

2. Implementación de código completa

import requests
from lxml import etree
from fake_useragent import UserAgent
import os

path = 'D:/阴阳师'
if not os.path.exists(path):
    os.mkdir(path)

# 随机产生请求头
ua = UserAgent(verify_ssl=False, path='fake_useragent.json')

url = 'https://yys.163.com/media/picture.html'  # 原画壁纸的页面链接
response = requests.get(url=url).text
html = etree.HTML(response)
lists = html.xpath('/html/body/div[2]/div[3]/div[1]/div[3]/div[2]/div')
num = 1
for i in range(len(lists)):
    a = lists[i].xpath('./div/div/a[contains(text(), "1920x1080")]')[0]  # 根据文本内容锁定节点a
    image_url = a.xpath('./@href')[0]  # 获取原画壁纸链接
    image_data = requests.get(url=image_url).content
    image_name = '{}.jpg'.format(num)  # 给每张图片命名
    save_path = path + '/' + image_name  # 图片的保存地址
    with open(save_path, 'wb') as f:
        f.write(image_data)
        print(image_name, '=======================>下载成功!!!')
        f.close()
        num += 1

Los resultados de la operación son los siguientes:
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Cuarto, video compuesto

Al sintetizar el video, poco a poco se puede apreciar la pintura original que se arrastró hacia abajo, lo cual es muy cómodo.

el código se muestra a continuación:

import cv2
import os

# 输出视频的保存路径
video_dir = 'D:/yinyangshi/result.mp4'
# 帧率
fps = 0.2
# 图片尺寸
img_size = (1920, 1080)

fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V')  # opencv3.0 mp4会有警告但可以播放
videoWriter = cv2.VideoWriter(video_dir, fourcc, fps, img_size)
img_files = os.listdir('D:/yinyangshi/')

for i in range(1, 397):
    img_path = 'D:/yinyangshi/tupian/' + '{}.jpg'.format(i)
    frame = cv2.imread(img_path)
    frame = cv2.resize(frame, img_size)   # 生成视频   图片尺寸和设定尺寸相同
    videoWriter.write(frame)      # 写进视频里
    print(f'======== 按照视频顺序第{i}张图片合进视频 ========')

videoWriter.release()   # 释放资源

Nota: Al componer un video, la ruta de guardado de la imagen y la ruta de generación del video no pueden contener chino. ! !

Enlace Bip Bip : https://www.bilibili.com/video/BV1Kp4y1W7yB

Colección de pinturas originales de Onmyoji

Supongo que te gusta

Origin blog.csdn.net/qq_44921056/article/details/114067435
Recomendado
Clasificación