2023 12306 Plataforma de compra de billetes Compra automatizada de billetes 2 | Resolver búsqueda y reserva de trenes

Tabla de contenido

1. Descripción

1.1 Antecedentes

1.2 Descripción

2. Pasos

2.1 Haga clic para comprar boletos

2.2 Ingrese la información del tren en el cuadro de búsqueda

2.3 Haga clic para buscar

2.4 Cuando aparezca la información del tren filtrarla, si hay billetes hacer clic en la interfaz de reserva de billetes.

3. Resultados

4. Secciones


1. Descripción

1.1 Antecedentes

Continuando con lo anterior, no pude conseguir boletos para la temporada alta de viajes del Festival de Primavera. Intenté resolver este problema a través del código. El siguiente contenido es la segunda parte.

1.2 Descripción

Sistema operativo: ganar 10

Editor:pycharmedu

Idioma y versión: Python 3.10

Biblioteca utilizada: selenio

Idea de implementación: utilizar selenio para simular el comportamiento humano y realizar operaciones automatizadas

Acerca del código: el código completo se publicará en la tercera parte para realizar plenamente la función.

La primera parte del contenido-->El problema de inicio de sesión se ha resuelto.

Descarga del navegador e instalación de controladores: Descarga del navegador Firefox e instalación de controladores

Enlace de contenido de la primera parte: Primera parte

Explicación del bloqueo del navegador: lo más probable es que las versiones descargadas del navegador y del controlador del navegador sean inconsistentes. Se recomienda utilizar un motor de búsqueda para encontrar el contenido compartido por el jefe para resolver el problema.

La siguiente URL no será la real, úsala para probar, presta atención para identificarla y cámbiala tú mismo.

La función del diagrama de flujo de compra automatizada de boletos se implementa como se muestra en la Figura 1:

Figura 1

2. Pasos

Consejos: Los siguientes códigos se completan verificando el código fuente de la página y revisando los elementos.

2.1 Haga clic para comprar boletos

    driver.switch_to.window(driver.window_handles[-1])
    time.sleep(3)
    # 刷新
    driver.refresh()
    time.sleep(3)
    print(driver.title)
    print(driver.current_url)
    # https://kyfw.12306.cn/otn/view/index.html
    # 在新窗口点击前往订票,又会跳转到新窗口
    driver.find_element(By.XPATH, '//*[@id="link_for_ticket"]').click()

2.2 Ingrese la información del tren en el cuadro de búsqueda

pregunta:

Hay un problema aquí: para ingresar contenido directamente en el cuadro de entrada, debe seleccionar el destino solicitado por el sistema para tener éxito, y este destino no se puede revisar;

Solución:

Primero haga clic en el cuadro de entrada, ingrese el contenido, luego haga clic en otro cuadro de entrada y repita el ciclo (después de la prueba, las indicaciones en el cuadro de entrada de fecha se ignoran) y el contenido del mensaje que aparece en el sistema se seleccionará de forma predeterminada.

    driver.switch_to.window(driver.window_handles[-1])
    time.sleep(5)
    # 出发地
    driver.find_element(By.XPATH, '//*[@id="fromStationText"]').click()
    driver.find_element(By.XPATH, '//*[@id="fromStationText"]').send_keys("深圳北", Keys.ENTER)
    # 目的地
    time.sleep(1)
    driver.find_element(By.XPATH, '//*[@id="toStationText"]').click()
    driver.find_element(By.XPATH, '//*[@id="toStationText"]').send_keys("百色", Keys.ENTER)
    # 日期,先清除默认内容,在输入
    driver.find_element(By.XPATH, '//*[@id="train_date"]').click()
    driver.find_element(By.XPATH, '//*[@id="train_date"]').clear()
    # time.sleep(1)
    driver.find_element(By.XPATH, '//*[@id="train_date"]').send_keys("2023-01-18")

2.3 Haga clic para buscar

    time.sleep(2)
    driver.find_element(By.XPATH, '//*[@id="query_ticket"]').click()

2.4 Cuando aparezca la información del tren filtrarla, si hay billetes hacer clic en la interfaz de reserva de billetes.

   for tr in tr_list:  # 遍历所有车次信息
        time.sleep(1)
        train_number = tr.find_element(By.CLASS_NAME, "number").text  # 车次
        if train_number in trains:  # 如果该车次在输入的车次里
            left_ticker_td = tr.find_element(By.XPATH, './/td[4]').text
            if left_ticker_td == '有' or left_ticker_td.isdigit():  # 如果该车次有票
                print(train_number+'有票')
                btn72 = tr.find_element(By.CLASS_NAME, 'btn72')  # 找到该车次的预订按钮
                btn72.click()

3. Resultados

3.1 El resultado final de ejecutar el código.

Como se muestra en la Figura 2 a continuación:

Figura 2

4. Secciones

Esta parte es la segunda parte. Completa la búsqueda de trenes desde la interfaz de inicio de sesión y filtra los trenes. La parte restante es confirmar la información del pasajero y enviar el pedido para completar la captura automática de boletos.

Lo que necesitas saber para completar esta parte:

1) Cambio de perspectiva, clics, entrada de cuadros de texto y extracción de contenido de Selenium

2) conceptos básicos de Python

Nota: El código completo se publicará en la tercera parte para realizar completamente la función.

Supongo que te gusta

Origin blog.csdn.net/qq_57663276/article/details/128566462
Recomendado
Clasificación