extraire le texte de <p> ... </p> tag ou directement à partir d&#39;un fichier HTML

asp.net c# html html-agility-pack regex

Question

J'ai une page HTML contenant certains noms de fichiers que je souhaite télécharger depuis un serveur Web. Je dois lire ces noms de fichiers afin de créer une liste qui sera transmise à mon application Web qui télécharge le fichier à partir du serveur. Ces noms de fichiers ont une extension.

J'ai creusé sur ce sujet mais je n'ai rien trouvé d'autre à part -

  1. Regex ne peut pas être utilisé pour analyser HTML.
  2. Utiliser le pack d'agilité HTML

N'y a-t-il pas d'autre moyen pour que je puisse rechercher du texte ayant un motif tel que filename.ext à partir d'un fichier HTML?

Exemple de code HTML contenant le nom de fichier -

 <p class=3DMsoNormal style=3D'margin-top:0in;margin-right:0in;margin-bottom=:0in; margin-left:1.5in;margin-bottom:.0001pt;text-indent:-.25in;line-height:normal;mso-list:l1 level3 lfo8;tab-stops:list 1.5in'><![if !supportLists]> <span style=3D'font-family:"Times New Roman","serif";mso-fareast-font-family:"Times New Roman"'><span style=3D'mso-list:Ignore'>1.<span style=3D'font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    </span></span></span><![endif]><span style=3D'font-family:"Times New Roman","serif"; mso-fareast-font-family:"Times New Roman"'>**13572_PostAccountingReport_2009-06-03.acc**<o:p></o:p></span></p>

Je ne peux pas utiliser HTML Agility Pack car je ne suis pas autorisé à télécharger et utiliser une application ou un outil.

Cela ne peut-il pas être réalisé par une autre logique?

C'est ce que j'ai fait jusqu'à présent

 <p class=3DMsoNormal style=3D'margin-top:0in;margin-right:0in;margin-bottom=:0in; margin-left:1.5in;margin-bottom:.0001pt;text-indent:-.25in;line-height:normal;mso-list:l1 level3 lfo8;tab-stops:list 1.5in'><![if !supportLists]> <span style=3D'font-family:"Times New Roman","serif";mso-fareast-font-family:"Times New Roman"'><span style=3D'mso-list:Ignore'>1.<span style=3D'font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    </span></span></span><![endif]><span style=3D'font-family:"Times New Roman","serif"; mso-fareast-font-family:"Times New Roman"'>**13572_PostAccountingReport_2009-06-03.acc**<o:p></o:p></span></p>

Certains "=" apparaissant dans chaque nom de fichier ne peuvent pas obtenir le nom du fichier. comment puis-je supprimer l'occurrence de "=" dans la pageSource string

Merci d'avance

Akhil

Réponse acceptée

Bien, sachant que les regex ne sont pas idéales pour trouver des valeurs en HTML:

var files = [];
var p = document.getElementsByTagName('p');

for (var i = 0; i < p.length; i++){
    var match = p[i].innerHTML.match(/\s(\S+\.ext)\s/)

    if (match)
        files.push(match[1]);
}

Live DEMO

Remarque: lisez les commentaires à la question.

Si l'extension peut être quelque chose, vous pouvez utiliser ceci:

var files = [];
var p = document.getElementsByTagName('p');

for (var i = 0; i < p.length; i++){
    var match = p[i].innerHTML.match(/\s(\S+\.ext)\s/)

    if (match)
        files.push(match[1]);
}

Mais ce n'est vraiment pas fiable.

Live DEMO


Réponse populaire

Il peut être impossible d’obtenir des noms de fichiers en utilisant un modèle commun, à cause de 1.5in -.25in 7.0pt et des goûts, essayez d’être plus spécifique (si possible), comme
/[a-z0-9_-]+\.[az]+/gi ou
/>[a-z0-9_-]+\.[az]+</gi (balisage inclus) ou même
/>\d+_PostAccountingReport_\d+-\d+-\d+\.[az]+</gi




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi