【问题标题】:HtmlAgilityPack issue with HTMLHTML 的 HtmlAgilityPack 问题
【发布时间】:2013-07-02 12:24:59
【问题描述】:

我想获取标题、图片 src 和其他详细信息,但这里有一个问题

<div class="thumb-container">
    <a class="featured" title="Spectacularly " href="http://www.site.com"></a>          
    <div rel="0" id="property_image_1181140" class="thumb">
        <a title="*Want this title*" href="*http://www.wanttogetthislink.com*">
           <img style="width: 190px; height: 127px; left: -11px; top: 0px;" alt="Spectacularly upgraded 5 bed Family Villa For Sale" src="http://c1369013.r13.cf3.rackcdn.com/1181140-1-mini.jpg">
        </a>
    </div>
<div class="description-listing">
   <div class="heading">
      <div class="type">
         <label>*5,900* sq.ft.,</label>
         <span>*Villa*</span>
         <p class="bedroom"><em>*5*</em></p>
         <p class="bathroom"><em>*6*</em></p>
      </div>
      <p class="amount">
         <label>AED</label>
         <strong>*5,120,000*</strong>
      </p>
   </div>

这是我的代码

 var allCarResults = rootNode.SelectNodes("//div[normalize-space(@class)='general-listing']");
 foreach (var carResult in allCarResults)
 {
     var dataNode = carResult.SelectSingleNode(".//div[@class='thumb']");
     var carNameNode = dataNode.SelectSingleNode(".//a");
 }

在这里我想把所有东西都放在**中

我不知道该怎么做..

【问题讨论】:

  • 不完全确定你在追求什么......你能突出你想要的项目以及基于哪个锚点吗?
  • @jessehouwing:我把我需要的所有东西都附在**里面了。现在我希望你清楚

标签: c# asp.net html-agility-pack


【解决方案1】:

原理几乎相同,您需要为每个项目编写一个 XPath 并从一个公共锚点中选择它:

HtmlNode thumbContainer = doc.DocumentNode.SelectSingleNode("//div[@class='thumb-container']");

HtmlNode link = thumbContainer.SelectSingleNode("./div[@class='thumb']/a");
string linkTitle = link.Attributes["title"].Value;
string linkHref = link.Attributes["href"].Value;

HtmlNode label = thumbContainer.SelectSingleNode("./div[@class='description-listing']/div[@class='heading']/div[@class='type']/label");
string labelText = label.InnerText;

// ... Similar for other items

或者,您可以遍历每个 HtmlNode 及其子节点,然后将每个项目与您所追求的项目列表进行匹配。

【讨论】:

  • 这里给我对象引用 null 错误 "string labelText = label.InnerText;"
  • 那么你的html和你发布的不完全一样。
  • 发布真实数据或指向该站点的链接。此外,如果标签是可选的,请确保在分配周围添加 if (HtmlNode != null) 以检查是否
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-19
  • 2014-04-29
  • 2013-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多