5.关键问题
下面是代码中使用的关键问题的解决方案:
(1)如果一切参数都能找到,用哪个类或方法来下载?System.Net.WebClient的DownloadFile方法。
(2)怎样获取图标总页数?根据观察网页,每一页都有"个图标,翻X页可看完",X即为总页数,通过抓取网页字符串即可;
(3)怎样获取每一页所有图标的编号?当然还是通过网页抓取。如下图,通过审查元素,可以看到每一个图标的编号和名称。

(4)怎样获取下载图标的名称?有两种方式,一是网页内容抓取;二是通过根据服务返回的信息来提取。
三、编程实现
编程比较简单,下面是网页操作的两个比较核心的函数(第一次抓取网页,不知道这样好不好)
第一个函数,是通过网页地址来获取网页代码的。
/// <summary>/// 根据URL获取网页代码/// </summary>/// <param name="strURL">URL地址</param>/// <returns>网页代码字符串</returns>public static string GetHtmlString(string strURL){ Uri uri = new Uri(strURL); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream stream = response.GetResponseStream(); string strHtml = ""; if (stream != null) { StreamReader sr = new StreamReader(stream); strHtml = sr.ReadToEnd(); sr.Close(); stream.Close(); response.Close(); } return strHtml;}
第二个函数主要是根据向服务器提交图标的下载链接,获取返回的headers信息,这些信息里就包含了图标的名称。
/// <summary>/// 根据URL获取headers信息/// </summary>/// <param name="URL">URL地址</param>/// <returns>headers信息列表</returns>public static Dictionary<string, string> GetHeaders(string URL){ Dictionary<string, string> headerList = new Dictionary<string, string>(); WebRequest webRequestObject =HttpWebRequest.Create(URL); WebResponse responseObject =webRequestObject.GetResponse(); foreach (string headerKey in responseObject.Headers) { headerList.Add(headerKey, responseObject.Headers[headerKey]); } responseObject.Close(); return headerList;}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-37440-2.html
放在家里不放心
6%