Tabla de contenido
1. Objetivo 1: hacer coincidir regularmente la URL de la imagen
3. Objetivo 3: Guardar la imagen en la carpeta de prueba
4. Pequeño círculo de seguridad en la red
1. Objetivo 1: hacer coincidir regularmente la URL de la imagen
ubicación de URL
Podemos encontrar que img está en esta etiqueta
Método de solicitud GET
Extraer ubicación de URL
Palabras clave para dominar
.*?
//表示匹配任意字符(除换行符)
(.*?)
//表示匹配任意字符(除换行符)0次或多次,尽可能少地匹配,并将这部分内容作为一个分组
La etiqueta de destino es la siguiente:
<div class="thumb">
<a target="_blank" style="background:url(https://pic.chinaz.com/picmap/thumb/202306271716277907_5.jpg);background-size:cover;background-position:center" rel="noopener noreferrer" href="https://www.chinaz.com/2023/0708/1541405.shtml">
</a>
</div>
El contenido que necesita ser extraído es el siguiente:
(se añade una \ adicional como carácter de escape)
img_url = <div class="thumb">.*?url\((.*?)).*?</div>
Rastrear todo el contenido de la imagen que coincida con el formato
res: es una expresión regular para patrones coincidentes.
img_url: es la cadena que debe coincidir.
re.S: es un parámetro indicador en el módulo re, lo que significa que la cadena se considera como una sola línea, es decir, el carácter de nueva línea también se considera como un carácter ordinario
img_url_list = re.findall(res,img_url,re.S)
resultado de la operación:
La URL de destino se rastrea hasta
Código completo:
import re
import requests
def get_img():
url = 'https://www.chinaz.com/'
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0",
}
res = requests.get(url,headers=headers,timeout=10).text
img_url = '<div class="thumb">.*?url\((.*?));.*?</div>'
img_url_list = re.findall(img_url,res,re.S)
print(img_url_list)
if __name__ == '__main__':
get_img()
2. Objetivo 2: crear carpetas
Determine si la carpeta existe para decidir si crear la carpeta y use la función os.makedirs() para crear la carpeta de forma recursiva. No hace nada si la carpeta ya existe.
('./test' también se puede reemplazar con parámetros para pasar valores)
(La función os.mkdir() no crea carpetas recursivamente)
import os
if not os.path.exists('./test'):
os.makedirs('./test')
3. Objetivo 3: Guardar la imagen en la carpeta de prueba
Procesamiento de datos
Primero recorra la URL de la imagen a su vez y luego elimine los caracteres innecesarios
Use la función replace () para reemplazar caracteres no esenciales con nada
for u in img_url_list:
img_u = u.replace("(", "").replace(")", "")
print(img_u)
Después de ejecutar, la carpeta se creó y la URL se atravesó con éxito
Obtener datos de imagen
Una vez que tenga la dirección de la imagen, puede solicitarla
.content devuelve datos en formato binario
image = requests.get(url=img_u,headers=headers,timeout=10).content
nombra el archivo
Toma el último de la url como su nombre
Eso es https://pic.chinaz.com/picmap/thumb/202306271716277907_5.jpg
Toma 202306271716277907_5.jpg
etcétera
img_name = img_u.split('/')[-1]
Guardar la imagen localmente
ruta de la imagen
Descargar imágenes a la ruta local
img_path = './test/' + img_name
with open(img_path,'wb') as f:
f.write(img_data)
print(img_name + '下载成功!')
resultado de la operación:
Se encontró que había otro dato misceláneo ingresado que causó un error
Luego agregué decisivamente una declaración de juicio if
if re.match(r'https?://', u):
Finalmente descargado con éxito
Código completo:
import re
import requests
import os
def get_img():
url = 'https://www.chinaz.com/'
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0",
}
res = requests.get(url, headers=headers, timeout=10).text
img_url = r'<div class="thumb">.*?url\((.*?)\);.*?</div>'
img_url_list = re.findall(img_url, res, re.S)
for u in img_url_list:
if re.match(r'https?://', u):
img_u = u.replace("(", "").replace(")", "")
img_data = requests.get(url=img_u, headers=headers, timeout=10).content
img_name = img_u.split('/')[-1]
img_path = './test/' + img_name
with open(img_path, 'wb') as f:
f.write(img_data)
print(img_name + '下载成功!')
else:
continue
if __name__ == '__main__':
if not os.path.exists('./test'):
os.makedirs('./test')
get_img()
4. Pequeño círculo de seguridad en la red
GitHub - BLACKxZONE/Treasure_knowledge https://github.com/BLACKxZONE/Treasure_knowledge