Obtenga el estado del tren en vivo usando Python

Suponga que desea viajar a lugares utilizando Indian Railways y ha reservado un tren. Pero no está seguro de si el tren llega a tiempo o no, y hacerlo manualmente puede ser muy ajetreado. Entonces, en este artículo, vamos a escribir un script de Python para obtener el estado del tren en vivo usando un nombre de tren o un código de tren.

Módulos necesarios

  • 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 pandas as pd
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 del tren en la URL y pase la URL a la función getdata() y convierta esos datos en código HTML.

Nota: Le recomendamos encarecidamente que obtenga el nombre y el código del tren desde aquí. Hacer clic

Python3

# input by geek
train_name = "03391-rajgir-new-delhi-clone-special-rgd-to-ndls"
  
# url
url = "https://www.railyatri.in/live-train-status/"+train_name
  
# pass the url
# into getdata function
htmldata=getdata(url)
soup = BeautifulSoup(htmldata, 'html.parser')
  
# display html code
print(soup)

Producción:

Paso 4: recorrer el estado en vivo del documento HTML.

Python3

# traverse the live status from
# this Html code
data = []
for item in soup.find_all('script', type="application/ld+json"):
    data.append(item.get_text())
  
# convert into dataframe
df = pd.read_json (data[2])
  
# display this column of
# dataframe
print(df["mainEntity"][0])

Producción:

{‘@type’: ‘Question’, ‘name’: ‘Q) ¿Dónde está mi tren (03391) RGD NDLS HUMSFR?’,
‘acceptedAnswer’: {‘@type’: ‘Answer’, ‘text’: ‘A : 03391 RGD NDLS HUMSFR está a 10 km de VARANASI JN (312 km recorridos hasta ahora). Se espera que llegue a Nueva Delhi a las 02:30.’}}

Paso 5: ahora obtenga los datos requeridos de este directorio.

Python3

print(df["mainEntity"][0]['name'])
print(df["mainEntity"][0]['acceptedAnswer']['text'])

Producción:

P) ¿Dónde está mi tren (03391) RGD NDLS HUMSFR?
R: 03391 RGD NDLS HUMSFR está a 10 km de VARANASI JN (312 km recorridos hasta ahora). Se espera que llegue a Nueva Delhi a las 02:30.

Plena aplicación:

Python3

# import module
import requests
from bs4 import BeautifulSoup
import pandas as pd
  
# user define function
# Scrape the data
def getdata(url):
    r = requests.get(url)
    return r.text
  
# input by geek
train_name = "03391-rajgir-new-delhi-clone-special-rgd-to-ndls"
  
# url
url = "https://www.railyatri.in/live-train-status/"+train_name
  
# pass the url
# into getdata function
htmldata = getdata(url)
soup = BeautifulSoup(htmldata, 'html.parser')
  
# traverse the live status from
# this Html code
data = []
for item in soup.find_all('script', type="application/ld+json"):
    data.append(item.get_text())
  
# convert into dataframe
df = pd.read_json(data[2])
  
# display this column of
# dataframe
print(df["mainEntity"][0]['name'])
print(df["mainEntity"][0]['acceptedAnswer']['text'])

Producción:

P) ¿Dónde está mi tren (03391) RGD NDLS HUMSFR?
R: 03391 RGD NDLS HUMSFR está a 6 km de VARANASI JN (316 km recorridos hasta ahora). Se espera que llegue a Nueva Delhi a las 02:30.

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 *