使用 HtmlAgilityPack 从网站获取数据

发布于 2024-12-27 22:39:53 字数 1065 浏览 1 评论 0原文

我正在开发一个应用程序,我必须从网站获取数据。网站的格式是:

<div id="id1" class="class1">
    <ol class="cls_ol">
    <li>
       <div class="class2">Content 1</div>
       <div class="cls_img">
                *** Code for some image ***
       </div>
       Content 2
    </li>
    <li>  *** Same like above <li> ***  </li>
    <li>  *** Same like above <li> ***  </li>
    </ol>
</div>

我使用代码来获取这个...

protected void Button1_Click(object sender, EventArgs e)
{
    var obj = new HtmlWeb();
    var document = obj.Load(" ** url of a website ** ");

    var bold = document.DocumentNode.SelectNodes("//div[@class='class1']");

    foreach (var i in bold)
    {
        Response.Write(i.InnerHtml);
    }

但是,我的代码的问题是这样的,它还获取

< 的图像/代码>。我不需要这张图。那么,如何获取
的所有内容而不从
< 获取图像/代码>。

I am developing an app in which I have to fetch data from website. The format of website is:

<div id="id1" class="class1">
    <ol class="cls_ol">
    <li>
       <div class="class2">Content 1</div>
       <div class="cls_img">
                *** Code for some image ***
       </div>
       Content 2
    </li>
    <li>  *** Same like above <li> ***  </li>
    <li>  *** Same like above <li> ***  </li>
    </ol>
</div>

I use code for fetching this...

protected void Button1_Click(object sender, EventArgs e)
{
    var obj = new HtmlWeb();
    var document = obj.Load(" ** url of a website ** ");

    var bold = document.DocumentNode.SelectNodes("//div[@class='class1']");

    foreach (var i in bold)
    {
        Response.Write(i.InnerHtml);
    }

But, the problem with my code is this, it also fetches the images of <div class="cls_img"></div>. I don't need this image. So, how to fetch all the content of <div id="id1" class="class1"> without fetch the image from <div class="cls_img">.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

怎樣才叫好 2025-01-03 22:39:53

第 1 步 - 选择并删除

标记内的

内的图像:
  var images = document.DocumentNode.SelectNodes(
      "//div[@class='class1']//*//div[@class='cls_img']//img"
  );

  // note that if no nodes found "images" variable will hold a null value
  foreach (var image in images)
  {
      image.Remove();
  }

第 2 步 -选择

元素(您已经完成了) - 现在没有该图像:

  var bold = document.DocumentNode.SelectNodes("//div[@class='class1']");
  foreach (var node in bold)
  {
      Console.Write(node.InnerHtml);
  }

Step 1 - select and remove images inside the <div class="cls_img"> inside the <div class="class1"> tag:

  var images = document.DocumentNode.SelectNodes(
      "//div[@class='class1']//*//div[@class='cls_img']//img"
  );

  // note that if no nodes found "images" variable will hold a null value
  foreach (var image in images)
  {
      image.Remove();
  }

Step 2 - select <div class="class1"> elements (you already done it) - now without that images:

  var bold = document.DocumentNode.SelectNodes("//div[@class='class1']");
  foreach (var node in bold)
  {
      Console.Write(node.InnerHtml);
  }
心意如水 2025-01-03 22:39:53

循环遍历节点并找到匹配属性为 class="cls_img" 的节点并删除该节点。

node.ParentNode.RemoveChild(node);

Loop through the nodes and find a node with the matching attribute of class="cls_img" and remove that node.

node.ParentNode.RemoveChild(node);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文