J'essaye d'écrire un code pour récupérer des données depuis http://goldpricez.com/gold / history / lkr / years-3. Le code que j'ai écrit suit ci-dessous. Le code fonctionne et me donne les résultats escomptés.

import pandas as pd

url = "http://goldpricez.com/gold/history/lkr/years-3"

df = pd.read_html(url)

print(df)

Mais le résultat est avec des données indésirables et je ne veux que les données du tableau. S'il vous plaît, certains peuvent m'aider.

Ici, j'ai ajouté l'image de la sortie avec des données indésirables (cerclées en rouge)

1
Thejitha Anjana 14 juin 2020 à 07:43

3 réponses

Meilleure réponse
    import pandas as pd
    from urllib.request import urlopen, Request


   url = "http://goldpricez.com/gold/history/lkr/years-3"

   req = Request(url=url)
   html = urlopen(req).read()
   df = pd.read_html(html)# this will give you a list of dataframes from html

  print(df[3])
-1
Bernad Peter 14 juin 2020 à 14:28

La façon dont vous avez utilisé .read_html renverra une liste de toutes les tables. Votre table est à l'index 3

import pandas as pd

url = "http://goldpricez.com/gold/history/lkr/years-3"

df = pd.read_html(url)[3]

print(df)

.read_html appelle l'URL et utilise BeautifulSoup pour analyser la réponse sous le capot. Vous pouvez changer l'analyse, le nom de la table, passer l'en-tête comme vous le feriez dans .read_csv. Consultez .read_html pour plus de détails. .

Pour la vitesse, vous pouvez utiliser lxml par exemple pd.read_html(url, flavor='lxml')[3]. Par défaut, html5lib, qui est le deuxième plus lent, est utilisé. Une autre saveur est html.parser. C'est le plus lent de tous.

0
Prayson W. Daniel 14 juin 2020 à 08:14

Utilisez BeautifulSoup pour cela, le code ci-dessous fonctionne parfaitement

import requests
from bs4 import BeautifulSoup
url = "http://goldpricez.com/gold/history/lkr/years-3"
r = requests.get(url)
s = BeautifulSoup(r.text, "html.parser")
data = s.find_all("td")
data = data[11:]
for i in range(0, len(data), 2):
    print(data[i].text.strip(), "      ", data[i+1].text.strip())

Cet autre avantage de l'utilisation de BeautifulSoup est qu'il est beaucoup plus rapide que votre code

0
yashetty29 14 juin 2020 à 06:29