1

我在一个新类中有以下代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using HtmlAgilityPack;
using System.IO;
using System.Text.RegularExpressions;
using System.Xml.Linq;
using System.Net;
using System.Web;
using System.Threading;
using DannyGeneral;
using GatherLinks;

namespace GatherLinks
{
    class RetrieveWebContent
    {
        HtmlAgilityPack.HtmlDocument doc;
        string imgg;
        int images;

        public RetrieveWebContent()
        {
            images = 0;
        }

        public List<string> retrieveImages(string address)
        {
            try
            {
                doc = new HtmlAgilityPack.HtmlDocument();
                System.Net.WebClient wc = new System.Net.WebClient();
                List<string> imgList = new List<string>();
                doc.Load(wc.OpenRead(address));
                HtmlNodeCollection imgs = doc.DocumentNode.SelectNodes("//img[@src]");
                if (imgs == null) return new List<string>();

                foreach (HtmlNode img in imgs)
                {
                    if (img.Attributes["src"] == null)
                        continue;
                    HtmlAttribute src = img.Attributes["src"];

                    imgList.Add(src.Value);
                    if (src.Value.StartsWith("http") || src.Value.StartsWith("https") || src.Value.StartsWith("www"))
                    {
                        images++;
                        string[] arr = src.Value.Split('/');
                        imgg = arr[arr.Length - 1];
                        wc.DownloadFile(src.Value, @"d:\MyImages\" + imgg);
                    }
                }

                return imgList;
            }
            catch
            {
                Logger.Write("There Was Problem Downloading The Image: " + imgg);
                return null;

            }
        }
    }
}

上面的代码是我的 WebCrawler 的一部分。此代码将仅从网站下载图像文件。

例如,我有这个网站: http ://web.archive.org/web/20131216195236/http://open-hardware-monitor.googlecode.com/svn/trunk/

上述站点中包含一个名为App. 如果我右键单击它save as,然后我看到它是一个配置文件。如果我单击该Hardware/链接,我会看到许多 *.CS 文件。

如何制作和/或更新我的代码,以便它可以下载各种文件类型,而不仅仅是下载图像?

4

1 回答 1

4

现在以下行:

HtmlNodeCollection imgs = doc.DocumentNode.SelectNodes("//img[@src]");

正在抓取所有图像标签并进行处理。您将需要找到一种方法来查找 href 扩展等于的所有锚标记.cs

它将类似于上面的行。我建议阅读 xPath,因为这似乎SelectNodes是用来查找元素的。

希望这可以帮助您入门!

于 2013-03-12T17:28:05.040 回答