Esatto, ora non ricordo preciso se 8 o 7 ma dubito cambi di troppo la cosa
Читать полностью…
E hai anche una length di questa lista che varia da 4 a 8 giusto?
Читать полностью…
Se usassi td.strings ? da doc dice che ritorna solo NavigableString (che mi pare é quello che ti interessa, e CData e le yelda quindi dovrebbe essere un generatore, puoi usare direttamente questo, filtrando con isistanceof
Читать полностью…
Eh sì, purtroppo sta tabella è fatta anche male senza classi o altro e ho anche il fastidio che non tutti sono span ma diventano <a> (a caso) quindi non posso filtrare per quello
Читать полностью…
Neanche quello è un problema, mi basta usare split con lo spazio in quel caso
Читать полностью…
Però fare pulizia di quella stringa non penso sia troppo rallentante
Читать полностью…
con fissi intendi che é uguale per ogni td in tr.find_all("td")?
Читать полностью…
Tecnicamente dovrebbe essere
Orario | Titolo | Desc | ... |
Ogni riga ha generalmente 8 campi anche se altri sono 4, quelli fissi sono sempre i primi 3 di cui il primo è inutile dato che coincide con la partenza del cron
oddio, non é un po' esagerato? deve solo matchare esattamente "18:00", la cosa migliore sarebbe che prendere lo slice dell'iterabile e saltare il primo elemento, che é quello che contiene il 18:00
Читать полностью…
mh credo che farò così, in effetti non ci avevo pensato
Читать полностью…
se li scorri in un for loop cosa ti impedisce di saltare il primo ciclo semplicemente con un enumerate o meglio con un if x != "18:00"?
Читать полностью…
Esiste una discriminante per la quale riesci a capire quale informazione ti serva e quale no?
Читать полностью…
Benvenuto Est, prima di proseguire leggi il regolamento.
Vi ricordo che tutte le domande riguardanti lo sviluppo di "bot telegram" sono severamente vietate.
Se desideri un corso per iniziare a programmare in Python puoi vedere Python ABC. Altre guide sono presenti sul messaggio fissato in alto.
Per capirci, mi ha dato questo:
from bs4 import BeautifulSoupЧитать полностью…
from bs4.element import Tag, NavigableString
html = """
<td>18:00<br><span style="font-size:10px">28 days</span></td>
<td> TEXT1 <br><span style="font-size:10px">TEXT2</span></td>
"""
soup = BeautifulSoup(html, "html.parser")
td_list = soup.find_all("td")
def parse_td(td):
# testi dentro gli <span>
span_texts = [s.get_text(strip=True) for s in td.find_all("span")]
# testi fuori dallo span: scorri i contenuti figli e prendi solo le NavigableString
outer_parts = []
for node in td.contents:
# se è una stringa (NavigableString) -> strip e aggiungi
if isinstance(node, NavigableString):
text = node.strip()
if text:
outer_parts.append(text)
# se è un Tag diverso dallo span (es. <b>, <i>, ecc.), estrai il suo testo
elif isinstance(node, Tag) and node.name != "span":
text = node.get_text(" ", strip=True)
if text:
outer_parts.append(text)
outer_text = " ".join(outer_parts) # unisci parti separate da spazi
return outer_text, span_texts
for td in td_list:
outer, spans = parse_td(td)
print("Outer:", outer)
print("Spans:", spans)
print("---")
Ci darò un occhio appena torno a casa, ho provato a mandarlo anche a gpt ma non ho ricevuto risposte utili
Читать полностью…
Aggiungici poi che la data è un normale tr posto sulla tabella e scorrendola si incontrano date di giorni precedenti
Читать полностью…
Esatto, ma stavo cercando, che magari c'era un metodo che era più adatto, perchè comunque lui per fare quella roba sta già iterando sulle stringhe singole, quindi il metodo prende già la lista di strighe(che ti serve a te) le concatena e te le dà, poi tu devi sconcatenarle per riottenere qualcosa che aveva già prima, non ha senso computazione totalmente inutile
Читать полностью…
no certo ma a te servono i singoli valori giusto? non ti serve la sola stringa intera(?)
Читать полностью…
spe, td.get_text(" ", True) é una stringa con gli spazi come separatore e rappresenta una riga?
quindi é nel formato:
"{orario} {titolo} {desc} ..."?
E tu vuoi evitare di prendere orario nel loop di td perchè lo conosci già prima che inizi quel loop?
Che sono campi con qualcosa a discapito di " "
Читать полностью…
Al momento sto provando con un
td.get_text(" ", True)
for td in tr.find_all("td")
Quello che vedo io è solo un pattern che ricorda un orario/durata
Читать полностью…
Basta uno strip, ma comunque la cosa migliore é evitare direttamente questo check nel loop (che dovrà fare per ogni elemento, ma gli serve solo per il primo elemento) se sai che é il primo con uno slice lo skippi
Читать полностью…
Se la prima cella di ogni riga contiene sempre l'orario si esclude a priori facilmente con una regex
Читать полностью…
il problema è capire il criterio con cui dici che 18:00 non ti serve e invece TEXT1 sì. se il testo che ti serve ha un pattern, oppure quello che non ti serve ha un pattern, puoi includerli/escluderli in base al pattern. in questo caso mi pare di capire che 18:00 è un valore noto quindi puoi semplicemente fare come dice giulio e saltare quello in particolare
Читать полностью…
Perchè 18:00 è un dato che già ho dato che lo script parte a quell'orario e nella tabella (purtroppo) lo inseriscono, TEXT1 no
Читать полностью…
🌒 FINE MODALITÀ NOTTE
✅ Da questo momento è nuovamente possibile inviare media (foto, video, file...) e link nel gruppo.
Z3 API in Python: From Sudoku to N-Queens in Under 20 Lines (2015) (Score: 150+ in 1 day)
Link: https://readhacker.news/s/6FDzx
Comments: https://readhacker.news/c/6FDzx