如何使用htmlagilitpack仅提取图像链接?

时间:2015-06-05 17:03:52

标签: c# .net winforms

我正在使用此代码:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            backgroundWorker = sender as BackgroundWorker;
            if (backgroundWorker != null)
            {

                while (!backgroundWorker.CancellationPending)
                {
                        if (backgroundWorker.CancellationPending)
                        {
                            e.Cancel = true;
                            break;
                        }
                        if (newHtmls.Count == 1)
                            break;

                        HtmlAgilityPack.HtmlWeb hw = new HtmlAgilityPack.HtmlWeb();
                        HtmlAgilityPack.HtmlDocument doc = hw.Load("https://www.test.com");
                        htmls = new List<string>();
                        foreach (HtmlAgilityPack.HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
                        {
                            string hrefValue = link.GetAttributeValue("href", string.Empty);
                                if (!newHtmls.Contains(hrefValue))
                                    newHtmls.Add(hrefValue);
                        }

                    while (true)
                    {
                        if (backgroundWorker.CancellationPending)
                        {
                            e.Cancel = true;
                            break;
                        }
                        htmlloaded = true;
                        NavigateToLinks();
                        break;
                    }
                }                
            }            
        }

现在它将添加任何链接。 我试图将IF更改为:

if (!newHtmls.Contains(hrefValue) && hrefValue.Contains("img"))

但这只会给我两个链接。 也许问题是它们中的大多数链接都超过两行?

但总的来说,我想得到的只是图片链接。 可能是包含img或image或jpg的链接.....可能更多的情况。

1 个答案:

答案 0 :(得分:0)

编辑:修正转化问题

这样的事情

i++