Ciao a tutti,
mi accodo anch'io a questo thread essendo interessato allo stesso argomento.
Premetto che sono un neofita di Python: lo sto studiando da un paio di mesi abbondanti tra corsi online anche a pagamento e libri di settore e sono interessato ad apprenderlo per impiegarlo profittevolmente nel mio lavoro, quindi specializzandomi nel Data Scientist e nel Machine Learning (anche se, per il momento, questi temi mi sembrano ancora lontani anni luce da dove sono. Ma pian piano ci arriveremo...

).
Detto ciò, sto da qualche tempo lavorando su uno script per fare web scraping con l'impiego combinato di requests e di BeautifolSoup ma nonostante gli sforzi, non riesco a trovare soluzione al mio attuale intoppo. Espongo di seguito il problema.
Il sito "fonte" da cui attingere i dati che mi interessano ha, ad un certo punto, una struttura di questo tipo (opportunamente alterata in alcune parole per non ricondurre al sito reale) :
<div class="im-mainFeatures">
<ul class="nd-list nd-list--pipe"><li class="nd-list__item im-mainFeatures__price"><div class="im-mainFeatures__title"> Variabile_1</div></li><li class="nd-list__item"><span class="im-mainFeatures__value" >3
<svg viewBox="0 0 16 16" width="16" height="16" class="nd-icon im-mainFeatures__symbol " ><use class="nd-icon__use" xlink:href="/assets-au/sito-it/images/common/sprite-main-features___80243d0e.svg#planimetry"></use></svg></span><span class="im-mainFeatures__label">locali</span></li><li class="nd-list__item"><span class="im-mainFeatures__value" ><span> </span>100<span class="im-mainFeatures__symbol">m²</span></span><span class="im-mainFeatures__label">Variabile_2</span></li><li class="nd-list__item"><span class="im-mainFeatures__value" >2
<svg viewBox="0 0 16 16" width="16" height="16" class="nd-icon im-mainFeatures__symbol " ><use class="nd-icon__use" xlink:href="/assets-au/sito-it/images/common/sprite-main-features___80243d0e.svg#bathroom"></use></svg></span><span class="im-mainFeatures__label">Viariabile_3</span></li><li class="nd-list__item"><span class="im-mainFeatures__value" data-text="3">3
<svg viewBox="0 0 16 16" width="16" height="16" class="nd-icon im-mainFeatures__symbol " ><use class="nd-icon__use" xlink:href="/assets-au/sito-it/images/common/sprite-main-features___80243d0e.svg#stairs"></use></svg></span><span class="im-mainFeatures__label">Variabile_4</span></li></ul></div>A me interessa estrapolare solo il dato evidenziato in rosso, solamente quel 2 (si, beh, da questo stralcio di codice, non in generale da tutto il sito

). Il problema è che il relativo percorso nei nodi è in comune con altri tag ed il "parametro" (non so se è il termine corretto)
im-mainFeatures__value si ripete più volte, impedendomi di raggiungere quello specifico valore.
Il mio script è questo:
X = contenuto.find('span', attrs = {'class':'im-mainFeatures__value'})
Y = X.text
Y = Y.replace(" ","").replace("\n","")
print (Y)
Con questa impostazione, il programma mi manda in output (print) il valore
3, situato alla stringa precedente rispetto a quello di mio interesse, ipotizzo per via di una mera sequenzialità di ricerca che fa fermare il programma al primo risultato. E qui arriviamo al dunque: come faccio ad indirizzare l'estrazione verso il dato di mio interesse e non al primo che incontra?
Spero di essere stato abbastanza chiaro da farmi almeno comprendere

Grazie in anticipo per l'aiuto.
P.S.:
Il Lutz è sempre una buona idea.
Ti riferisci a "Imparare Python" di Mark Lutz, quello con il titolo blu e il topo in copertina? Se non sbaglio, l'edizione italiana è ferma alla IV datata 2011, ormai ben 9 anni orsono. Dici che vale ancora la pena o ormai è un pò troppo vecchiotta?