7
votes

Fonctionnement de la chaîne Python, extrait le texte entre les balises HTML

J'ai une chaîne:

<font face="ARIAL,HELVETICA" size="-2">  
JUL 28         </font>


3 commentaires

Note, la

6 Réponses :


0
votes

est grep une option?

grep "<[^>]*>(.*)<\/[^>]*>" file


2 commentaires

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.



6
votes

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: xxx pré>

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")


2 commentaires

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.



1
votes

ou, vous pouvez simplement utiliser belle soupe :

Belle soupe est un analyseur HTML / XML Python conçu pour des projets de retournement rapides tels que l'écran-grattage


1 commentaires

Probablement surkill, mais un bon choix s'il y a plus d'analyse HTML à faire.



0
votes

Utiliser les sélecteurs XPath de Scraphath comme documenté à http: //doc.scrapy .org / fr / 0.10.3 / sujets / sélecteurs.html

Vous pouvez également utiliser un analyseur HTML tel que BeauSoup, en particulier si vous souhaitez utiliser le document de manière orientée objet.

http://pypi.python.org/pypi/beautifulsoupe/3.2.0 < / a>


0 commentaires


13
votes

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. XXX PRE>

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)


2 commentaires

Agréable! Cela semble beaucoup moins compliqué que la manière de Regex.


@Ffluxcapacitor Un mot d'avertissement: mon deuxième argument à STRATTIME 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.