Python gatea en el horizonte de las pantimedias de Douban HD big picture

Prefacio

Hoy, un amigo me pidió que escribiera un guión. La demanda es rastrear las imágenes fijas de un anime que acaba de ver, así que comencé a satisfacer sus necesidades jajaja ~ porque este guión involucra algunos lotes y también se usará El módulo se clasifica en programación de penetración Python, hablaré brevemente sobre la idea de escribir este script en 3 pasos.

Paso 1: Integrar URL

Primero eché un vistazo a la estructura de URL del sitio web. Este tipo de rastreo de imágenes es un poco como una muñeca anidada. Requiere limpieza de datos capa por capa hasta que se obtenga la dirección real.

De hecho, el script es fácil de entender y necesitas dominar la regularidad de Python. ¡Aquí tengo una regularidad detallada de Python esperando tu revisión!
Trucos regulares de artes marciales de Python.
Inserte la descripción de la imagen aquí
Aquí debes pasar las páginas, por lo que debes hacer dos regulares y pasarlos en dos bucles for.
Inserte la descripción de la imagen aquí

Haga clic con el botón derecho para ver el código fuente y concebir una
Inserte la descripción de la imagen aquí
regla regular . Luego, aparece el código del primer paso:

#get_num()的作用是整合裤袜视界全部图片的url
def get_num(url1):
    url = 'https://movie.douban.com/subject/30419644/photos?type=S'
    req = requests.get(url=url,headers=header)
    html = req.text
    page = re.findall(r'<a href=\"https://movie\.douban\.com/photos/photo/(.*?)\">',html)
    pages = re.findall(r'<a href=\"(.*?)\" >\d</a>',html)
    # 这里过滤一下需要跳转的页面的url,传给turn_page()进行处理
    for j in pages:
        turn_page(j)
    #在这里把过滤出来的url列表赋值给i,拼接后传递给函数get_img_url()
    for i in page:
        url2 = url1+i
        get_img_url(url2)

Este es el código para el cambio de página automático:

# 这里获取翻页的url并进行二次处理
def turn_page(page):
    host = 'https://movie.douban.com/photos/photo/'
    url = page
    req = requests.get(url=url,headers=header)
    html = req.text
    pages = re.findall(r'<a href=\"https://movie\.douban\.com/photos/photo/(.*?)\">',html)
    for j in pages:
        url2 = host+j
        get_img_url(url2)

Paso 2: filtrar URL

Después de integrar la URL, haga clic y descubra que debe integrarse más de nuevo,
Inserte la descripción de la imagen aquí
así que una vez más para construir el
Inserte la descripción de la imagen aquí
tercer código normal :

#这里做了一次数据清洗,从传递过来的url中爬取图片的真实url
def get_img_url(url2):
    req = requests.get(url=url2,headers=header)
    html = req.text
    url = re.findall(r'<img src=\"(.*?)\" width=\"686\" />',html)
    down_img(url)

Paso 3: descargar imágenes en lotes

Después del filtrado final aquí, se obtiene la imagen real .jpg, descárguela y ¡termine el día!
Inserte la descripción de la imagen aquí

# 最后把处理好的url,再进行一次清洗,得到真正的图片地址~
def down_img(url3):
    # 用for循环接收传递过来的url列表
    for img_url in url3:
        req = requests.get(url=img_url,headers=header)
        img = req.content
        img_url = img_url
        # 这里为了避免图片因重名而覆盖,采用split()方式分割取值来命名
        img_name = img_url.split('/')[-1]
        local_name = '/'+'Pantyhose'+'/'+img_name
        # 这里就开始下载了~最后为了避免被封IP,sleep了一下
        with open(local_name,'wb') as f:
            print '正在下载{}......'.format(local_name)
            f.write(img)
            print '下载完毕,请查看!'
            time.sleep(3)

Código completo

Nota: El intérprete aquí es Python2.7, no 3.8, ¡los estudiantes que usan Python3 tienen que cambiar el código!

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2020/10/13 16:50
# @Author  : Shadow
# @Site    : 
# @File    : Panty_hose.py
# @Software: PyCharm

# 建议从底部开始食用
import requests
import re
import os
import time


# 最后把处理好的url,再进行一次清洗,得到真正的图片地址~
def down_img(url3):
    # 用for循环接收传递过来的url列表
    for img_url in url3:
        req = requests.get(url=img_url,headers=header)
        img = req.content
        img_url = img_url
        # 这里为了避免图片因重名而覆盖,采用split()方式分割取值来命名
        img_name = img_url.split('/')[-1]
        local_name = '/'+'Pantyhose'+'/'+img_name
        # 这里就开始下载了~最后为了避免被封IP,sleep了一下
        with open(local_name,'wb') as f:
            print '正在下载{}......'.format(local_name)
            f.write(img)
            print '下载完毕,请查看!'
            time.sleep(3)

# 这里做了一次数据清洗,从传递过来的url中爬取图片的真实url
def get_img_url(url2):
    req = requests.get(url=url2,headers=header)
    html = req.text
    url = re.findall(r'<img src=\"(.*?)\" width=\"686\" />',html)
    down_img(url)

# 这里获取翻页的url并进行二次处理
def turn_page(page):
    host = 'https://movie.douban.com/photos/photo/'
    url = page
    req = requests.get(url=url,headers=header)
    html = req.text
    pages = re.findall(r'<a href=\"https://movie\.douban\.com/photos/photo/(.*?)\">',html)
    for j in pages:
        url2 = host+j
        get_img_url(url2)

# get_num()的作用是整合裤袜视界全部图片的url
def get_num(url1):
    url = 'https://movie.douban.com/subject/30419644/photos?type=S'
    req = requests.get(url=url,headers=header)
    html = req.text
    page = re.findall(r'<a href=\"https://movie\.douban\.com/photos/photo/(.*?)\">',html)
    pages = re.findall(r'<a href=\"(.*?)\" >\d</a>',html)
    # 这里过滤一下需要跳转的页面的url,传给turn_page()进行处理
    for j in pages:
        turn_page(j)
    # 在这里把过滤出来的url列表赋值给i,拼接后传递给函数get_img_url()
    for i in page:
        url2 = url1+i
        get_img_url(url2)

if __name__=='__main__':

    # 定义请求头
    header = {
    
    
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
    }

    # 定义图片存放目录
    dir = 'D:\Pantyhose'

    # 测试D盘是否已存在目录Pantyhose,若不存在则创建
    try:
        print '正在测试文件目录状态......'
        mkdir = os.mkdir(dir)
        if mkdir is False:
            print '已为您创建图片目录:' + dir
    # 若存在则输出路径
    except WindowsError:
        print '目录已存在:' + dir

    # 给老子爬!
    get_num('https://movie.douban.com/photos/photo/')

Supongo que te gusta

Origin blog.csdn.net/qq_43573676/article/details/109062860
Recomendado
Clasificación