Use Python para descargar automáticamente videos de Miss Douyin, ¡usted tiene la última palabra!

La razón principal por la que escribí este artículo es porque leí un artículo.

 

"Después de usar Python para elegir a estas diosas de alto aspecto en Douyin, de repente me convertí en un ganador en la vida". El artículo describe brevemente a un ingeniero que usa Python + ADB + la IA de Goose Factory para prestar atención a más de mil hermosas jóvenes en una noche.

 

Refleja plenamente la diferencia entre los estudiantes universitarios y los trabajadores de la fábrica. Aquí tengo que decir la piel de vacuno × × × ...

 

Solía ​​pensar en mi vida sola en la fábrica de Novosibirsk, pensando adónde debería ir.

 

 

Recuerdo que también confiaba en el vibrato para pasar ese período de sufrimiento.

 

Simplemente no es tan bueno como el jefe de arriba, soy una hermosa joven que reconoce artificialmente ...

 

Incluso ahora he registrado la cuenta de IA de Goose Factory, pero todavía no puedo usarla.

 

Así que comencemos con algo simple, preste atención de antemano y luego usemos Python para automatizar la descarga de videos callejeros. ! !

 

 

/ 01 / Carlos

 

Al usar Charles para encontrar la interfaz de la API de video, la operación específica es la misma que en el caso anterior en Dangdang, por lo que no entraré en detalles.

 

 

Aquí, puede obtener la información de solicitud del video deslizando la aplicación Douyin.

 

A través de muchos experimentos, descubrí que la parte posterior del vínculo seguirá cambiando, solo la parte frontal del vínculo es siempre la misma, es decir, "http: // v1-dy", "http: // v6-dy" y "http: // v9-" dy "sin cambios.

 

Entonces, al escribir un guión, puede comenzar con esta información como un enlace.

 

 

/ 02 / mitmproxy

 

Utilice el componente mitmdump en mitmproxy para conectarse a los scripts de Python e implementar el procesamiento posterior a la supervisión con Python.

 

 

Aquí solo uso el script para obtener el enlace, y no uso directamente el script para descargar el video.

 

Debido a que ejecuto el script en la carpeta donde se encuentra el archivo mitmdump.exe, el módulo de solicitudes no se puede importar al script.

 

No quiero meterse con esas molestas variables de entorno, así que solo obtenga el enlace.

 

Luego, vaya a descargar el video, el enlace del video debe desduplicarse, puede haber duplicados.

 

La secuencia de comandos de Python es la siguiente.

 

def respuesta (flujo): 
    urls = ['http: // v1-dy', 'http: // v3-dy', 'http: // v6-dy', 'http: // v9-dy'] 
    # Filtre la URL y seleccione solo la URL del video 
    para la URL en las URL: 
        si la URL está en flow.request.url: 
            print (' Tik Tok 

Video 

') 
            with open ('douyin.csv', 'a +', encoding = 'utf- 8-sig ') como f: 
                f.write (flow.request.url +' 
')

 

 

/ 03 / épocas

 

Configure los parámetros de Appium para Douyin.

 

 

Haga clic en el botón azul y el teléfono iniciará automáticamente la aplicación Douyin.

 

A continuación, opere el teléfono y luego haga clic en el botón de actualización de Appium para obtener el código de ubicación del elemento.

 

A través de esta práctica, se encuentra que Appium a veces no puede obtener bien el posicionamiento de los elementos, que puede ser el mismo que el de la página iframe del lado Web.

 

Por lo tanto, para los elementos que no se pueden encontrar, hago clic directamente en la ubicación de la pantalla del teléfono.

 

Dado que las pantallas de los teléfonos móviles de todos son de diferentes tamaños, este parámetro definitivamente cambiará, por lo que hay inconvenientes y no se puede usar universalmente.

 

{Desliza el dedo hacia la izquierda y hacia la derecha para cambiar de imagen}

 

El funcionamiento general es como se muestra arriba. Falta la imagen de la página principal de UP, inventela usted mismo. El código Python es el siguiente.

 

importar tiempo 
importar aleatoriamente 
desde appium importar webdriver 
desde selenium.webdriver.common.by importar por 
desde selenium.webdriver.support.ui importar WebDriverWait 
desde appium.webdriver.common.touch_action importar TouchAction 
desde selenium.webdriver.support importar esperar_condiciones como EC 


def main (): 
    # 设置 驱动 配置
    servidor = 'http: // localhost: 4723 / wd / hub' 
    deseada_caps = { 
        'nombre de plataforma': 'Android', 
        'nombre de dispositivo': 'STF_AL00', 
        'paquete de aplicaciones': 'com.ss. android.ugc.aweme ', 
        ' appActivity ':' .main.MainActivity ', 
        # 关闭 手机 软 键盘
        ' unicodeKeyboard ': Verdadero,
        'resetKeyboard': Verdadero
    } 
    driver = webdriver.Remote (servidor, deseada_caps) 
    wait = WebDriverWait (controlador, 60) 
    # 
    Acepte el acuerdo de privacidad del usuario, haga clic en button_1 = wait.until (EC.presence_of_element_located ((By.ID, 'com.ss.android.ugc. aweme: id / q6 '))) 
    button_1.click () 
    # Prohibir el permiso telefónico, haga clic en 
    button_2 = wait.until (EC.presence_of_element_located ((By.ID,' com.android.packageinstaller: id / 
    allow_deny_button '))) button_2 .click () 
    # Deshabilitar el permiso de ubicación, haga clic en 
    button_3 = wait.until (EC.presence_of_element_located ((By.ID, 'com.android.packageinstaller: id / 
    allow_deny_button '))) button_3.click () 
    time.sleep (2) 
    # Desliza hacia arriba para ingresar a la página de reproducción de video de TikTok
    TouchAction (controlador) .press (x = 515, y = 1200) .move_to (x = 515, y = 1000) .release (). Perform () 
    button_6.send_keys ('Tu contraseña')
    # Aquí debe establecer un retraso mayor, ya que 
    Douyin tiene operaciones guiadas y avisos, debe esperar un tiempo time.sleep (20) 
    # Haga clic en el "me gusta" de 
    Douyin para ingresar a la interfaz de inicio de sesión TouchAction (controlador) .presione ( x = 950, y = 800) .release (). perform () 
    # Haga clic en la contraseña para iniciar sesión 
    button_4 = wait.until (EC.presence_of_element_located ((By.ID, 'com.ss.android.ugc.aweme: id / afg' ))) 
    button_4.click () 
    # Ingrese la cuenta 
    button_5 = wait.until (EC.presence_of_element_located ((By.ID, 'com.ss.android.ugc.aweme: id / ab_'))) 
    button_5.send_keys ('usted的 cuenta ') 
    # Ingrese la contraseña 
    button_6 = wait.until (EC.presence_of_element_located ((By.ID,' com.ss.android.ugc.aweme: id / aes '))) 
    time.sleep (2) 
    # Porque saltará El teclado en 
    pantalla ocultará el botón de inicio de sesión. Debe hacer clic en el teclado en pantalla para cancelar TouchAction (controlador) .press (x = 980, y = 1850) .release ().realizar() 
    time.sleep (2) 
    # Haga clic en el botón de inicio de sesión 
    button_7 = wait.until (EC.presence_of_element_located ((By.ID, 'com.ss.android.ugc.aweme: id / abb'))) 
    button_7 .click () 
    time.sleep (2) 
    # Inicie sesión correctamente, ingrese a la interfaz de video de Douyin , haga clic en la barra de título debajo de "我" 
    TouchAction (controlador) .press (x = 990, y = 1850) .release (). perform () 
    # Ingrese a la página de inicio personal, haga clic en el botón de atención_8 
    = esperar.hasta (EC.presence_of_element_located ((By.ID, 'com.ss.android.ugc.aweme: id / a_7'))) 
    button_8.click () 
    # Ingrese a la barra de atención , Haga clic en la segunda preocupación
    button_9 = wait.until (EC.presence_of_element_located ((By.XPATH, '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LandroidarLayout/ .widget.FrameLayout / android.view.ViewGroup / android.widget.LinearLayout / android.support.v7.widget.RecyclerView / android.widget.RelativeLayout [2] /android.widget.RelativeLayout [1] '))) 
    button_9. click () 
    # Ingrese a la página principal de UP, haga clic en el primer video 
    button_10 = wait.until (EC.presence_of_element_located ((By.ID, 'com.ss.android.ugc.aweme: id / aqm'))) 
    button_10.click () 
    # Siga hacia abajo en la página hasta la parte inferior 
    mientras True: 
        desplazándose TouchAction (controlador) .press (x = 515, y = 1247) .move_to (x = 515, y = 1026) .release (). Perform ()
        time.sleep (float (random.randint (5, 10))) 


if __name__ == '__main__': 
    main ()

 

Para descargar el código de video, necesita anular la duplicación del enlace del video.

 

importar pandas como 
solicitudes de 
importación pd import os 

num = 0 
dom = [] 
folder_path = "F: / video /" 
os.makedirs (folder_path) 
df = pd.read_csv ('douyin.csv', header = None, names = [" url "]) 

# Desduplicar 
        el enlace y eliminar el enlace de video obtenido ingresando el Douyin 
for i en df ['url'] [2:]: 
    if i not in dom: dom.append (i) 

# Descargar el video 
para j en dom: 
    url = j 
    num + = 1 
    respuesta = solicitudes.get (url, stream = True) 
    filename = str (num) + '. mp4' 
    with open ('F: \ video \' + filename, 'ab +') como f: 
        f.write (response.content) 
        f.flush () 
        print (nombre de archivo + 'descarga completa')

 

Finalmente obtuvo con éxito todos los videos de las señoritas ...

 

 

Si estuviera en la fábrica, qué bueno sería hacer este espectáculo en ese momento, jaja.

 

De hecho, creo que más, a la mayoría de las chicas les gusta dispararle a Douyin, pero no deberían descargar este tipo de operación.

 

Entonces aquí está la oportunidad para los hermanitos de descargar los videos de vibrato de las chicas que te gustan.

 

Luego edité un video de la serie "Most Beautiful Moments", ¿no es esta una oportunidad ...

 

 

/ 04 / Resumen

 

El código está en "GitHub". https://github.com/Tobby-star/douyin

¡Haga clic en la fuente azul para  recibir los 30 libros electrónicos de regalo!

 

Supongo que te gusta

Origin blog.csdn.net/weixin_43881394/article/details/108996466
Recomendado
Clasificación