J'ai besoin d'extraire des nœuds du html (pas du texte intérieur afin de préserver le format pour des recherches manuelles ultérieures). J'ai écrit le code ci-dessous. Mais à cause de la façon dont traverse fonctionne, j'ai obtenu des doublons dans le nouveau fichier html.
C'est le vrai html à analyser. http://www.sec.gov/Archives/edgar/data/1750/000104746912007300/a2210166z10-k.htm
J'ai besoin d'extraire la rubrique 10 et la partie entre "Executive Officers of the Registrant" et la rubrique suivante. Le point 10 figure dans tous les documents, mais "Executive Officers of the Registrant" ne figure pas dans tous les documents. J'ai besoin d'obtenir les nœuds plutôt que le simple texte parce que je veux préserver les tableaux, de sorte qu'à l'étape suivante, je puisse analyser les tableaux dans ces sections, s'il y en a.
Exemple de html :
html = "
<BODY>
<P>Dont need this </P>
<P>Start</P>
<P>Text To Extract 1 </P>
<P><Font><B>Text to Extract 2 </B></Font></P>
<DIV><TABLE>
<TR>
<TD>Text to Extract 3</TD>
<TD>Text to Extract 4</TD>
</TR>
</TABLE></DIV>
<P>End</P>
</BODY>
"
Je veux obtenir :
html = "
<BODY>
<P>Start</P>
<P>Text To Extract 1 </P>
<P><Font><B>Text to Extract 2 </B></Font></P>
<DIV><TABLE>
<TR>
<TD>Text to Extract 3</TD>
<TD>Text to Extract 4</TD>
</TR>
</TABLE></DIV>
<P>End</P>
</BODY>
"
Commencez à extraire lorsque le mot-clé start apparaît. Fin pour extraire lorsque le mot-clé fin apparaît.
Je dois extraire plusieurs sections d'un document html. Les mots-clés peuvent apparaître dans des nœuds avec des noms différents.
doc.at_css('body').traverse do |node|
inMySection = false
if node.text.match(/#{start_keyword}/)
inMySection = true
elsif node.text.match(/#{end_keyword}/)
inMySection = false
end
if inMySection
#Extract the nodes
end
end
J'ai également essayé d'utiliser xpath pour y parvenir, sans succès, après avoir consulté ces articles :