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