Ho fatto questo con BeautifulSoup ma è un po 'ingombrante, e sto cercando di capire se posso farlo direttamente con selenio.Selenio: Iterare gruppi di elementi
Diciamo che ho il seguente codice HTML, che ripete più volte nel sorgente della pagina con elementi identici ma diversi contenuti:
<div class="person">
<div class="title">
<a href="http://www.url.com/johnsmith/">John Smith</a>
</div>
<div class="company">
<a href="http://www.url.com/company/">SalesForce</a>
</div>
</div>
Ho bisogno di costruire un dizionario in cui la voce per ogni persona si presenta come:
dict = {'name' : 'John Smith', 'company' : 'SalesForce'}
posso facilmente ottenere selenio per produrre un elenco del contenuto di ogni elemento di livello superiore facendo:
driver.find_elements_by_class_name('person')
Ma poi non riesco a scorrere la lista perché il metodo di cui sopra non restringere il campo di applicazione/sorgente per solo il contenuto di tale elemento.
Se provo a fare qualcosa di simile:
people = driver.find_elements_by_class_name('person')
for person in people:
print person.find_element_by_xpath['//div[@class="title"]//a').text
ottengo solo lo stesso nome più e più volte.
Ho bisogno di fare questo gruppo per gruppo perché nel mio caso, iterando attraverso l'intera pagina e aggiungendo ogni tag singolarmente non funzionerà (c'è lo scrolling infinito, quindi sarebbe davvero inefficiente).
Qualcuno sa se è possibile farlo direttamente in selenio, e se sì, come?
Questo ha perfettamente senso, eppure non funziona. Si prega di consultare il codice di esempio aggiornato nel mio OP, che credo sia lo stesso di quello che hai postato. Restituisce lo stesso nome (sto indovinando dal primo oggetto nell'elenco) più e più volte. Non sembra restringere l'ambito ... – AutomaticStatic
@AutomaticStatic Ho aggiornato la risposta in breve dopo averla postata. C'è stato un errore (usato 'driver' invece di' persona' nel ciclo). Si prega di controllare di nuovo. Grazie. – alecxe
Sto facendo esattamente quello che hai scritto (tranne con una dichiarazione di stampa per verificare cosa sta restituendo) e sta ancora restituendo lo stesso nome più e più volte. – AutomaticStatic