come posso trovare tutte lasso di con una classe di 'blue'
che contengono il testo nel formato:Come trovare gli span con una classe specifica contenente testo specifico usando una bella zuppa e re?
04/18/13 7:29pm
che potrebbero pertanto essere:
04/18/13 7:29pm
o:
Posted on 04/18/13 7:29pm
in termini di costruire la logica per fare questo, questo è quello che ho ottenuto finora:
new_content = original_content.find_all('span', {'class' : 'blue'}) # using beautiful soup's find_all
pattern = re.compile('<span class=\"blue\">[data in the format 04/18/13 7:29pm]</span>') # using re
for _ in new_content:
result = re.findall(pattern, _)
print result
Mi riferivo a https://stackoverflow.com/a/7732827 e https://stackoverflow.com/a/12229134 per cercare di capire un modo per farlo, ma quanto sopra è tutto quello che ho ottenuto finora.
edit:
per chiarire lo scenario, ci sono lasso di con:
<span class="blue">here is a lot of text that i don't need</span>
e
<span class="blue">this is the span i need because it contains 04/18/13 7:29pm</span>
e nota che ho solo bisogno di non 04/18/13 7:29pm
il resto del contenuto.
Edit 2:
Ho anche provato:
pattern = re.compile('<span class="blue">.*?(\d\d/\d\d/\d\d \d\d?:\d\d\w\w)</span>')
for _ in new_content:
result = re.findall(pattern, _)
print result
e ottenuto l'errore:
'TypeError: expected string or buffer'
Potrei eseguire correttamente il codice esatto sopra, ma non funzionava nella mia implementazione. Ho pensato che potrebbe essere perché c'è un ' ' tra la data e l'ora nel codice sorgente originale, ad esempio '04/18/13 7:29 pm'. come riferimento, ho aggiunto '.replace (" "," ")' all'originale ''urlopen read object'' e ha funzionato. grazie mille (a tutti i soccorritori!). – user1063287