Desidero scaricare tutti gli .xls
o .xlsx
o .csv
da questo sito Web in una cartella specificata.Scaricare file .xls da una pagina Web utilizzando Python e BeautifulSoup
https://www.rbi.org.in/Scripts/bs_viewcontent.aspx?Id=2009
Ho esaminato Mechanize, bella zuppa, urllib2 ecc Mechanize non funziona in Python 3, urllib2 ha avuto anche problemi con Python 3, ho cercato soluzione, ma non ho potuto. Quindi, attualmente sto cercando di farlo funzionare usando Beautiful Soup.
ho trovato un po 'di codice di esempio e ha tentato di modificarlo per soddisfare il mio problema, come segue -
from bs4 import BeautifulSoup
# Python 3.x
from urllib.request import urlopen, urlretrieve, quote
from urllib.parse import urljoin
url = 'https://www.rbi.org.in/Scripts/bs_viewcontent.aspx?Id=2009/'
u = urlopen(url)
try:
html = u.read().decode('utf-8')
finally:
u.close()
soup = BeautifulSoup(html)
for link in soup.select('div[webpartid] a'):
href = link.get('href')
if href.startswith('javascript:'):
continue
filename = href.rsplit('/', 1)[-1]
href = urljoin(url, quote(href))
try:
urlretrieve(href, filename)
except:
print('failed to download')
Tuttavia, quando viene eseguito questo codice non estrarre i file dalla pagina di destinazione, né in uscita qualsiasi messaggio di errore (ad es. "download non riuscito").
- Come posso utilizzare BeautifulSoup per selezionare i file di Excel dalla pagina?
- Come posso scaricare questi file su un file locale usando Python?
Puoi descrivere in che modo il tuo codice "non ha funzionato"? Il codice postato è rientrato in modo errato e quindi non funzionerebbe affatto. – mfitzp
Il codice è stato eseguito a volte ma non ha mai creato alcun file. Per quanto riguarda la rientranza, mi scuso mentre postando Devo averlo rovinato, ma mi assicuro che quando ho eseguito il codice, mi sono occupato dell'indentazione –
Ho una soluzione funzionante per questo problema, ma la domanda è chiusa quindi non posso più postarla . L'ho postato come Gist qui https://gist.github.com/mfitzp/29522e2ac4057bf01745 – mfitzp