首页 > 解决方案 > 如何使用 HTML Agility Pack 在 href 中添加数据

问题描述

我有一个代码可以从网站上获取所有 5 个链接,所以我需要通过在前面加上“https://advancecare.pt”来更改这些链接......

现在我有这个代码:

HtmlWeb web = new HtmlWeb();

HtmlDocument doc = web.Load("myLink");

  foreach (HtmlNode ic in doc.DocumentNode.SelectNodes("//div[@class='component row-splitter']"))
            {
                foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
                {

                    HtmlNode test = doc.DocumentNode.SelectNodes("//a[@href]").First();
                    string hrefValue =  link.GetAttributeValue("href", string.Empty);
                   // test.SetAttributeValue("href", "mylink" + hrefValue);
                    
                    link.SetAttributeValue("href", "mylink" + hrefValue);
                    
                }

            }

此代码返回:

https:mylinkmylinkmylinkmylink/hrefValue

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

解决方案


您迭代文档中的所有div节点,然后迭代文档中的所有链接,因此每个链接的处理次数与文档中的div元素一样多。

只搜索 div 的子链接:

foreach (HtmlNode link in ic.SelectNodes("//a[@href]"))
...

推荐阅读