Meilleure façon d'analyser un tableau HTML dans un fichier CSV
J'ai récupérer des données de produit hors d'un site web existant pour le mettre dans une base de données. Les données sont toutes en HTML format de tableau, les numéros de modèle unique, mais chaque produit peut avoir un nombre quelconque d'attributs différents (afin que les tables j'ai besoin d'analyser toutes ont différentes colonnes et en-têtes).
<table>
<tr>
<td>Model No.</td>
<td>Weight</td>
<td>Colour</td>
<td>Etc..</td>
</tr>
<tr>
<td>8572</td>
<td>12 Kg</td>
<td>Red</td>
<td>Blah..</td>
</tr>
<tr>
<td>7463</td>
<td>7 Kg</td>
<td>Blue</td>
<td>Blah..</td>
</tr>
<tr>
<td>8332</td>
<td>42 Kg</td>
<td>Yellow</td>
<td>Blah..</td>
</tr>
</table>
C'est le format de sortie CSV je suis à la recherche de:
Model-No,Attribute-Name,Attribute-Value
8572,"Weight","12 Kg"
8572,"Colour","Red"
8572,"Etc","Blah.."
7463,"Weight","7 Kg"
7463,"Colour","Blue"
7463,"Etc","Blah.."
8332,"Weight","42 Kg"
8332,"Colour","Yellow"
8332,"Etc","Blah.."
Comme les tables, tous semblent être valide xhtml, je vais probablement charge de chacun dans un XmlDocument, mais quelqu'un aurait-il des suggestions pour une meilleure façon d'accomplir cette? Merci.
- WinForm ou WebApp?
- WebApp - je suis seulement après le code pour convertir le tableau html chaîne dans le csv chaîne si
- Jetez un oeil ici codeproject.com/Tips/142467/...
Vous devez vous connecter pour publier un commentaire.
Je peux penser de 3 façons de le faire:
Vous pouvez toujours aller avec Linq to XML en supposant que vous êtes au moins en NET 3.5 environnement.
HtmlAgilityPack est étonnant pour gratter les données des pages web html, utilisez-le pour ferrailler les tables dans une sorte d'objet intermédiaire, vous pouvez alors la forme d'un fichier csv à partir de cet objet.
En plus de HtmlAgilityPack, Khaled Nassar mentionné. Vous pouvez le faire via jQuery appliquer .chaque('tr') et d'affecter les 1er, 2ème et 3ème enfant pour objet de produit que vous pouvez envoyer via le service ou à un gestionnaire qui permettra de créer des cv de il.
Il y a un moyen très facile (quoique un inelegent un) pour ce faire. Si c'est juste un one off, il suffit d'ouvrir le htm/html fichier avec le tableau avec excel, puis enregistrez la feuille .fichier csv (si il n'y a aucune données à l'extérieur de la table dans le fichier, il peut facilement être retiré à partir d'excel).
Si vous allez répéter cette tâche, vous pouvez utiliser Microsoft.Bureau de.Interop.Excel espace de noms en C# (ou VB .nette) pour l'automatiser, en quelques lignes, comme suit:
Et pour ce cas, il devrait être facile à analyser la non-table dans le fichier html à l'aide de Regex sur les balises de tableau si nécessaire. Dans Visual Studio 2005 et jusqu'vous juste à droite, cliquez sur la référence pour votre projet et vous devriez trouver de Microsoft.Bureau de.Interop.Excel dans le cadre du .Onglet Net.