Obtenga trenes entre estaciones usando Python

Suponga que desea viajar utilizando los ferrocarriles indios y desea buscar los trenes entre estaciones específicas. Hacer esto manualmente puede ser muy agitado. Entonces, en este artículo, escribiremos un script que obtendrá automáticamente datos de Railyatri y dirá el nombre de los trenes junto con su código entre las estaciones especificadas.

Módulo necesario

  • bs4 : Beautiful Soup (bs4) es una biblioteca de Python para extraer datos de archivos HTML y XML. Este módulo no viene integrado con Python. Para instalar este tipo, escriba el siguiente comando en la terminal.
pip install bs4
  • requests : Request le permite enviar requests HTTP/1.1 de manera extremadamente fácil. Este módulo tampoco viene integrado con Python. Para instalar este tipo, escriba el siguiente comando en la terminal.
pip install requests

Veamos la ejecución paso a paso del script.

Paso 1: importar todas las dependencias

Python3

# import module
import requests
from bs4 import BeautifulSoup

Paso 2: Cree una función de obtención de URL

Python3

# user define function 
# Scrape the data 
def getdata(url): 
    r = requests.get(url) 
    return r.text

Paso 3: ahora combine el nombre de la estación y el código de la estación en la URL y pase la URL a la función getdata() y convierta esos datos en código HTML.

Python3

# input by geek
from_Station_code = "NDLS"
from_Station_name = "DELHI"
  
To_station_code = "PNBE"
To_station_name = "PATNA"
# url
url = "https://www.railyatri.in/booking/trains-between-stations?from_code="+from_Station_code+"&from_name="+from_Station_name+"+JN+&journey_date=+Wed&src=tbs&to_code=" + \
    To_station_code+"&to_name="+To_station_name + \
    "+JN+&user_id=-1603228437&user_token=355740&utm_source=dwebsearch_tbs_search_trains"
  
# pass the url
# into getdata function
htmldata = getdata(url)
soup = BeautifulSoup(htmldata, 'html.parser')
  
# display html code
print(soup)

Producción:

Paso 4: ahora encuentre la etiqueta requerida del código HTML y recorra el resultado.

Python3

# find the Html tag
# with find()
# and convert into string
data_str = ""
for item in soup.find_all("div", class_="col-xs-12 TrainSearchSection"):
    data_str = data_str + item.get_text()
result = data_str.split("\n")
  
print("Train between "+from_Station_name+" and "+To_station_name)
print("")
  
# Display the result
for item in result:
    if item != "":
        print(item)

Producción:

Plena aplicación.

Python3

# import module
import requests
from bs4 import BeautifulSoup
  
# user define function
# Scrape the data
def getdata(url):
    r = requests.get(url)
    return r.text
  
  
# input by geek
from_Station_code = "GAYA"
from_Station_name = "GAYA"
  
To_station_code = "PNBE"
To_station_name = "PATNA"
# url
url = "https://www.railyatri.in/booking/trains-between-stations?from_code="+from_Station_code+"&from_name="+from_Station_name+"+JN+&journey_date=+Wed&src=tbs&to_code=" + \
    To_station_code+"&to_name="+To_station_name + \
    "+JN+&user_id=-1603228437&user_token=355740&utm_source=dwebsearch_tbs_search_trains"
  
# pass the url
# into getdata function
htmldata = getdata(url)
soup = BeautifulSoup(htmldata, 'html.parser')
  
# find the Html tag
# with find()
# and convert into string
data_str = ""
for item in soup.find_all("div", class_="col-xs-12 TrainSearchSection"):
    data_str = data_str + item.get_text()
result = data_str.split("\n")
  
print("Train between "+from_Station_name+" and "+To_station_name)
print("")
  
# Display the result
for item in result:
    if item != "":
        print(item)

Producción:

Publicación traducida automáticamente

Artículo escrito por kumar_satyam y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *