J'ai une chaîne:
<font face="ARIAL,HELVETICA" size="-2"> JUL 28 </font>
6 Réponses :
est grep une option?
grep "<[^>]*>(.*)<\/[^>]*>" file
Je fais tout cela dans Python ... J'ai utilisé Scrapy pour gratter une page Web et explorer pour arriver à la chaîne ci-dessus.
désolé alors je ne pouvais pas mieux vous aider. Vous pouvez toujours utiliser la bibliothèque Re (Expression régulière) pour saisir la même chose.
Vous avez un tas d'options ici. Vous pourriez aller pour un analyseur XML complet comme LXML, bien que vous puissiez vouloir une solution spécifique à un domaine. J'irais avec une regex multiligne: maintenant que vous avez texte code>, vous pouvez l'activer à une date assez facilement: p>
from datetime import datetime
date = datetime.strptime(text, "%b %d")
Vous avez commenté la réponse d'Anthonyhurst selon laquelle cela vient d'un site Web. J'ai utilisé l'analyse HTML de LXML avec beaucoup de succès récemment, je le recommande fortement.
Merci! J'avais vu quelque chose de similaire avec des expressions régulières dans une autre question, mais n'a pas pu le faire fonctionner. Votre solution a parfaitement travaillé pour moi. L'inconvénient est que je ne comprends que ce qui se passe avec elle.
ou, vous pouvez simplement utiliser belle soupe : p>
Belle soupe est un analyseur HTML / XML Python conçu pour des projets de retournement rapides tels que l'écran-grattage p> blockQuote>
Probablement surkill, mais un bon choix s'il y a plus d'analyse HTML à faire.
Utiliser les sélecteurs XPath de Scraphath comme documenté à http: //doc.scrapy .org / fr / 0.10.3 / sujets / sélecteurs.html p>
Vous pouvez également utiliser un analyseur HTML tel que BeauSoup, en particulier si vous souhaitez utiliser le document de manière orientée objet. P>
python a une bibliothèque appelée htmlParser code> a>. Voir également la question suivante affichée dans ce qui est très similaire à ce que vous recherchez: p>
Lien brisé. Il devrait être docs.python.org/3/library/html.parser.html ou docs.python.org/2/library/htmlParser .html # module-htmlParser
Correction du lien. Merci
Bien qu'il soit possible d'analyser HTML arbitraire avec des expressions régulières, c'est souvent un piège à mort. Il existe de superbes outils pour analyser HTML, y compris beauxoup , qui est un Python Lib qui peut Manipulez cassé em> ainsi que bon HTML assez bien. Ensuite, il vous suffit d'analyser la date: p> >>> datetime.strptime(BS.font.contents[0].strip(), '%b %d')
>>> datetime.datetime(1900, 7, 28, 0, 0)
datetime.datetime(1900, 7, 28, 0, 0)
Agréable! Cela semble beaucoup moins compliqué que la manière de Regex.
@Ffluxcapacitor Un mot d'avertissement: mon deuxième argument à STRATTIME code> ci-dessus est en fait un exemple spécifique à la localisation. Veuillez vous reporter au Documentation pour plus de détails si vous avez besoin d'un solution locale-agnostique ou différente de la locale.
Note, la