Sto analizzando le pagine Web su un sito che visualizza i dati degli articoli. Questi articoli hanno circa 20 campi che possono o non possono verificarsi - ad esempio: prezzo, quantità, ultimo acquisto, alto, basso, ecc.Modo elegante per provare/tranne una serie di comandi BeautifulSoup?
Attualmente sto usando una serie di comandi; circa 20 righe di soup.find('div',{'class':SOME_FIELD_OF_INTEREST})
per cercare ciascun campo di interesse separato. (Alcuni sono in div
, span
, dd
, e così via, quindi è difficile fare solo un comando soup.find_all('div')
.)
La mia domanda: C'è un modo elegante per try
e except
tutto ciò in modo tale che la visione di detto codice può essere più compatto o conciso? In questo momento una riga di esempio sarebbe:
try:
soup.find('div', {'id':'item-pic'}).img["src"]
except:
""
Speravo di combinare tutto in una riga. Non credo di poter eseguire in modo sintattico la prova: <line of code> except: <code>
e non sono sicuro di scrivere una funzione che vada try_command(soup.find('div',{'id':'item-pic'}).img["src"])
senza eseguire effettivamente il comando.
Mi piacerebbe sapere se qualcuno ha qualche consiglio (tra cui: "questo non è possibile/pratico, andare avanti"). :)
EDIT: Dopo aver parlato un po ', penso di voler vedere cosa è buona pratica per la gestione delle eccezioni inline e se questa è la strada giusta da intraprendere.
mi si sta cercando porzioni in un testo, questo è un lavoro per regex. – eyquem
Vuoi eseguire un equivalente di espressione XPATH: '// div [@ id =" elemento-pic "]/img/@ src' usando BeautifulSoup? Per favore, fornisci altri esempi. Hai letto [i documenti] (http://www.crummy.com/software/BeautifulSoup/bs4/doc/#searching-the-tree)? 'try/except' sembra una cattiva idea qui. – jfs
In cima alla mia testa ricordo vagamente le incompatibilità tra XPATH e BeautifulSoup ... lemme provalo adesso ... – binarysolo