En este estilo de vida moderno, el combustible se ha convertido en una necesidad para todos los seres humanos. Es una base para nuestro estilo de vida. Entonces, vamos a escribir un script para rastrear su precio usando Python.
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: Solicitud le permite enviar requests HTTP/1.1 de forma extremadamente sencilla. 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 pase la URL a la función getdata() y convierta esos datos en código HTML
Python3
# link for extract html data htmldata = getdata("https://www.goodreturns.in/petrol-price.html") soup = BeautifulSoup(htmldata, 'html.parser') result = soup.find_all("div", class_="gold_silver_table") print(result)
Producción :
[<div class=”gold_silver_table”> <table border=”0″ cellpadding=”1″ cellpacing=”1″ width=”100%”> <tr class=”first”> <td class=”heading” width= ”200″>Ciudad</td> <td class=”heading” width=”200″>Precio de hoy</td> <td class=”heading” width=”200″>Precio de ayer</td> </tr > <tr class=”even_row”> <td><a href=”/precio-de-la-gasolina-en-nueva-delhi.html” title=”Nueva Delhi”>Nueva Delhi</a></td> <td> ₹ 82,08</td> <td> ₹ 82,03</td> </tr> <tr class=”odd_row”> <td><a href=”/precio-de-la-gasolina-en-calcuta.html” title=”Calcuta ”>Calcuta</a></td> <td> ₹ 83,57</td> <td> ₹ 83,52</td> </tr> <tr class=”even_row”> <td><a href=”/ precio-de-la-gasolina-en-mumbai.html” title=”Mumbai”>Mumbai</a></td><td> ₹ 88,73</td> <td> ₹ 88,68</td> </tr> <tr class=”odd_row”> <td><a href=”/precio-de-la-gasolina-en-chennai.html” title =»Chennai»>Chennai</a></td> <td> ₹ 85,04</td> <td> ₹ 85,00</td> </tr> <tr class=»even_row»> <td><a href =»/precio-de-la-gasolina-en-gurgaon.html» title=»Gurgaon»>Gurgaon</a></td> <td> ₹ 79,92</td> <td> ₹ 79,84</td> </tr> <tr class=”odd_row”> <td><a href=”/precio-de-la-gasolina-en-noida.html” title=”Noida”>Noida</a></td> <td> ₹ 82,23</td > <td> ₹ 82,30</td> </tr> <tr class=”even_row”> <td><a href=”/precio-de-la-gasolina-en-bangalore.html” title=”Bangalore”>Bangalore</ a></td> <td> $84,75</td> <td> $84,70</td> </tr> <tr class=”odd_row”> <td><a href=”/precio-de-la-gasolina-en-bhubaneswar.html” title=”Bhubaneswar”>Bhubaneswar</a></td> < td> ₹ 82,47</td> <td> ₹ 82,59</td> </tr> <tr class=”even_row”> <td><a href=”/precio-de-la-gasolina-en-chandigarh.html” title= ”Chandigarh”>Chandigarh</a></td> <td> ₹ 78,96</td> <td> ₹ 78,92</td> </tr> <tr class=”odd_row”> <td><a href= ”/precio-de-la-gasolina-en-hyderabad.html” title=”Hyderabad”>Hyderabad</a></td> <td> ₹ 85,30</td> <td> ₹ 85,25</td> </tr> < tr class=”even_row”> <td><a href=”/precio-de-la-gasolina-en-jaipur.html” title=”Jaipur”>Jaipur</a></td> <td> ₹ 90,08</td> <td> ₹ 89,24</td> </tr> <tr class=”odd_row”> <td><a href=”/precio-de-la-gasolina-en-lucknow.html” title=”Lucknow”>Lucknow</a></td> <td> ₹ 82,20</td> <td> ₹ 82,09</td> </tr> <tr class=”even_row”> <td><a href=”/precio-de-la-gasolina-en-patna.html” title=”Patna”>Patna</a ></td> <td> ₹ 84,73</td> <td> ₹ 84,88</td> </tr> <tr class=”odd_row”> <td><a href=”/precio-de-gasolina-en- trivandrum.html” title=”Trivandrum”>Trivandrum</a></td> <td> ₹ 83,91</td> <td> ₹ 84,03</td> </tr> </table> </div>]a href=”/precio-de-la-gasolina-en-patna.html” title=”Patna”>Patna</a></td> <td> ₹ 84,73</td> <td> ₹ 84,88</td> </ tr> <tr class=”odd_row”> <td><a href=”/precio-de-la-gasolina-en-trivandrum.html” title=”Trivandrum”>Trivandrum</a></td> <td> ₹ 83,91< /td> <td> $84,03</td> </tr> </tabla> </div>]a href=”/precio-de-la-gasolina-en-patna.html” title=”Patna”>Patna</a></td> <td> ₹ 84,73</td> <td> ₹ 84,88</td> </ tr> <tr class=”odd_row”> <td><a href=”/precio-de-la-gasolina-en-trivandrum.html” title=”Trivandrum”>Trivandrum</a></td> <td> ₹ 83,91< /td> <td> $84,03</td> </tr> </tabla> </div>]
Nota: estos scripts le darán solo datos sin procesar en formato de string que tiene que imprimir sus datos con sus necesidades.
Paso 4: Ahora, busque los datos que necesita en Sting con soup.find_all().
Python3
# Declare string var # Declare list mydatastr = '' result = [] # searching all tr in the html data # storing as a string for table in soup.find_all('tr'): mydatastr += table.get_text() # set according to your required mydatastr = mydatastr[1:] itemlist = mydatastr.split("\n\n") for item in itemlist[:-5]: result.append(item.split("\n")) result
Producción :
Paso 4: Cree un DataFrame para mostrar su resultado.
Python3
# Calling DataFrame constructor on list df = pd.DataFrame(result[:-8]) df
Código completo:
Python3
# import module import requests import pandas as pd from bs4 import BeautifulSoup # link for extract html data def getdata(url): r = requests.get(url) return r.text htmldata = getdata("https://www.goodreturns.in/petrol-price.html") soup = BeautifulSoup(htmldata, 'html.parser') # Declare string var # Declare list mydatastr = '' result = [] # searching all tr in the html data # storing as a string for table in soup.find_all('tr'): mydatastr += table.get_text() # set according to your required mydatastr = mydatastr[1:] itemlist = mydatastr.split("\n\n") for item in itemlist[:-5]: result.append(item.split("\n")) # Calling DataFrame constructor on list df = pd.DataFrame(result[:-8]) df
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