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