2009-04-11 6 views

Répondre

12

J'utiliser Python et BeautifulSoup pour le travail. C'est très solide pour gérer ce genre de choses. Pour votre cas, vous pouvez utiliser SoupStrainer pour que BeautifulSoup analyse uniquement les DIV dans le document qui contient la classe que vous voulez, de sorte qu'il n'a pas besoin de tout avoir en mémoire.

Par exemple, disons que votre document ressemble à ceci:

<div class="test">Hello World</div> 
<div class="hello">Aloha World</div> 
<div>Hey There</div> 

Vous pouvez écrire ceci:

>>> from BeautifulSoup import BeautifulSoup, SoupStrainer 
>>> doc = ''' 
...  <div class="test">Hello World</div> 
...  <div class="hello">Aloha World</div> 
...  <div>Hey There</div> 
... ''' 
>>> findDivs = SoupStrainer('div', {'class':'hello'}) 
>>> [tag for tag in BeautifulSoup(doc, parseOnlyThese=findDivs)] 
[<div class="hello">Aloha World</div>] 
1

Sounds comme un cas pour les bonnes vieilles expressions régulières.

Entrée:

<div class="test">Hello World</div> 
<div class="somename">Aloha World</div> 
<div>Hey There</div> 

RegEx:

\<div\sclass\=\"somename\"\>(?<Text>.*?)\<\/div\> 

Rendement:

Aloha World (note: In a single group named Text) 

ont probablement besoin de tenir compte pour enfermer les citations manquantes etc ...

Bien avec Regula r expressions maintenant vous avez two problems.

+0

L'ironie est agréable. Mais, il n'est pas facile d'upvote des réponses quand elles sont de la forme "ne fais pas ceci" –

+0

... maintenant avec moins d'ironie – Codebrain

0

Essayez TinyXML. (Analyseur XML C++)

Questions connexes