【问题标题】:how to get tr using html agility pack如何使用 html 敏捷包获取 tr
【发布时间】:2016-05-12 06:44:13
【问题描述】:

html是这样的

<tr>
<th class="label">Brand</th>
<td class="data">Dell</td>
</tr>
<tr>
<th class="label">Series</th>
<td class="data">Inspiron Touch</td>
</tr>
<tr>
<th class="label">Color</th>
<td class="data">Black & Red</td>
</tr>
<tr>
<th class="label">Operating System</th>
<td class="data">Windows 10 Home</td>
</tr>
<tr>
<th class="label">Screen Size</th>
<td class="data">15.6"</td>
</tr>
<tr>
<th class="label">Touchscreen</th>
<td class="data">Yes</td>
</tr>
<tr>
<th class="label">Screen Resolution</th>
<td class="data">3840 x 2160</td>
</tr>
<tr>
<th class="label">Processor Type</th>
<td class="data">Intel Core i7 6th Gen</td>
</tr>
<tr>
<th class="label">Processor Speed</th>
<td class="data">2.6 GHz</td>
</tr>
<tr>
<th class="label">Processor Turbo</th>
<td class="data">Up to 3.5 GHz</td>
</tr>
<tr>
<th class="label">Processor Cache</th>
<td class="data">6 MB</td>
</tr>
<tr>
<th class="label">Processor Model</th>
<td class="data">i7-6700HQ</td>
</tr>
<tr>
<th class="label">RAM</th>
<td class="data">16GB</td>
</tr>
<tr>
<th class="label">RAM Type</th>
<td class="data">DDR3L</td>
</tr>
<tr>
<th class="label">Hard Disk Capacity</th>
<td class="data">1TB + 128GB SSD</td>
</tr>
<tr>
<th class="label">HDD Interface</th>
<td class="data">SATA, SSD</td>
</tr>
<tr>
<th class="label">HDD RPM</th>
<td class="data">5400</td>
</tr>
<tr>
<th class="label">Graphics</th>
<td class="data">Nvidia Graphics</td>
</tr>
<tr>
<th class="label">Graphics Detail</th>
<td class="data">Nvidia GeForce GTX 960M</td>
</tr>

我想获取 tr 标签内每个 th 和 td 标签的标签和数据,前 4 个只有 Brand 系列颜色和操作系统,但是还有一些其他项目在 tr 内也具有相同的 th 和 td 类,请告诉我如何使用 html 敏捷包获取这些项目,我将这 4 个插入数据库,我使用选择节点我只获取第一个 tr 的内部文本,当我到达这些 tr 时,我正在使用此代码

 HtmlNodeCollection specsNode = null;
            specsNode = doc.DocumentNode.SelectNodes("//tr']");
            foreach (HtmlNode node in specsNode)
            {
                string htmli = node.InnerHtml;
                HtmlDocument doci = new HtmlDocument();
                doci.LoadHtml(htmli); 
    htmlNode node2 in doci.DocumentNode.SelectNodes("//td[@class='data']"){
node2.InnerText;

我现在对 HAP 更加熟悉了,但是 tr 中的类是相同的,我现在不知道如何获取它们。

【问题讨论】:

  • 发布示例 HTMl,其中包括 在 tr 中也具有相同 th 和 td 类的一些其他项目。另外,到目前为止,您使用 HtmlAgilityPack 尝试过什么?
  • @har07 我已经编辑了问题
  • @har07 因为每个 td 都有相同的类,所以每次选择第一个和 td 时都选择方法我不知道如何获得第二个第三个和第四个
  • 1.您的代码未编译,因此很难确切地看到您要执行的操作。 2. SelectNodes() 应该返回所有个匹配的节点,而不仅仅是第一个匹配的。那么究竟有什么问题呢?
  • 是的,我知道双斜杠和一个标签会给我所有匹配的节点,但我只想要前 4 个,然后在我只想要前四个之后将它们插入到我的数据库中,但它选择所有这些节点作为类是相同的,有没有我可以操作并给它们不同的类名的方法?

标签: html parsing html-agility-pack


【解决方案1】:

我不知道你想在这里做什么,但我猜.Contains 函数可能会帮助你解决问题,请使用.Contains 函数进行检查

string Result=html;
htmldocument doc=new htmldocument();
doc.Loadhtml(Result);
htmlnodecollection noden=null;
noden=doc.DocumentNode.SelectNodes("");
if(Result.Contains("your brand")==true)
{
//do something

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 2015-01-22
    • 1970-01-01
    相关资源
    最近更新 更多