Este artículo utiliza principalmente el módulo de solicitudes para solicitar páginas web, utiliza expresiones regulares para analizar los datos y guarda las imágenes de la Enciclopedia de la vergüenza, y también completa la función de paginación.
1. El uso específico del módulo de solicitudes puede referirse a este artículo.
2. Expresión regular que también he publicado antes, el enlace es el siguiente: expresión regular
Luego ingrese el enlace de escritura del código:
inicio, importamos el módulo
import re
import requests
import os
Crea carpetas para guardar imágenes binarias
if not os.path.exists('./糗事百科'):
os.mkdir('./糗事百科/')
Agregue encabezados de solicitud (utilizados para simular que usted es un navegador que envía una solicitud al servidor).
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240"
}
Debido a que este es mi propio encabezado de solicitud, por el bien de la privacidad, no lo terminaré.
Hicimos clic en la página siguiente y encontramos que solo los parámetros detrás de la página han cambiado, de 1 a 2. A partir de esto, podemos encontrar su ley y podemos usar el bucle for para pasar la página.
Seleccionamos la imagen con el mouse, hacemos clic derecho para verificarla y encontramos que el atributo src es parte de la URL de la imagen. La analizamos a través de expresiones regulares y luego empalmamos la URL con ella.
Expresión regular:
ex = '<div class="thumb">.*?<img src="(.*?)" alt=.*?</div>'
A continuación se muestra el código fuente para pasar páginas y analizar páginas web
for i in range(1, 6):
new_url = format(url % i)
# print(new_url)
response_text = requests.get(url=url, headers=headers).text
# 通过正则表达式匹配图片的url
img_src_list = re.findall(ex, response_text, re.S)
for img_src in img_src_list:
img_url = "https:" + img_src
file_name = img_src.split('/')[-1] # 命名文件名
img_respons_content = requests.get(url=img_url, headers=headers).content
Finalmente guarda la imagen
with open('./糗事百科/{}'.format(file_name), 'wb') as f:
f.write(img_respons_content)
print(file_name+"保存成功!!")
El código completo es el siguiente
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
# @Time : 2020-12-29 17:17
# @author : jianwei
# @Software : PyCharm
import re
import requests
import os
if not os.path.exists('./糗事百科'):
os.mkdir('./糗事百科/')
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0(请求头不方便透露)"
}
url = 'https://www.qiushibaike.com/imgrank/page/%d/'
ex = '<div class="thumb">.*?<img src="(.*?)" alt=.*?</div>' # 正则表达式
# 翻页
for i in range(1, 6):
new_url = format(url % i)
# print(new_url)
response_text = requests.get(url=url, headers=headers).text
# 通过正则表达式匹配图片的url
img_src_list = re.findall(ex, response_text, re.S)
for img_src in img_src_list:
img_url = "https:" + img_src
file_name = img_src.split('/')[-1] # 命名文件名
img_respons_content = requests.get(url=img_url, headers=headers).content
# 保存图片
with open('./糗事百科/{}'.format(file_name), 'wb') as f:
f.write(img_respons_content)
print(file_name+"保存成功!!")
¡Gracias por su apoyo y suscripción! !