Domanda

mio aeroporto locale vergognosamente utenti blocchi senza IE, e sembra terribile. Voglio scrivere uno script Python che otterrebbero i contenuti delle pagine arrivi e partenze ogni pochi minuti, e mostrare loro in maniera più leggibile.

I miei strumenti di scelta sono mechanize per truffare il sito di credere che uso di IE, e BeautifulSoup per l'analisi pagina per ottenere la tabella di voli di dati.

Onestamente, mi sono perso nella documentazione BeautifulSoup, e non riesce a capire come ottenere il tavolo (il cui titolo lo so) da tutto il documento, e come ottenere un elenco di righe da quel tavolo.

Tutte le idee?

È stato utile?

Soluzione

Questo non è il codice specifico è necessario, solo una demo di come lavorare con BeautifulSoup. Essa trova la tavola che è id è "Table1" e ottiene tutti i suoi elementi tr.

html = urllib2.urlopen(url).read()
bs = BeautifulSoup(html)
table = bs.find(lambda tag: tag.name=='table' and tag.has_attr('id') and tag['id']=="Table1") 
rows = table.findAll(lambda tag: tag.name=='tr')

Altri suggerimenti

soup = BeautifulSoup(HTML)

# the first argument to find tells it what tag to search for
# the second you can pass a dict of attr->value pairs to filter
# results that match the first tag
table = soup.find( "table", {"title":"TheTitle"} )

rows=list()
for row in table.findAll("tr"):
   rows.append(row)

# now rows contains each tr in the table (as a BeautifulSoup object)
# and you can search them to pull out the times

Solo se ti interessa, BeautifulSoup non è più mantenuto, e il manutentore originale suggerisce una transizione verso lxml. Xpath dovrebbe fare il trucco solo bene.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top