网页 抓取 innertext 试题( 国家最新行政区划的网址为-8使用ie参数)

优采云 发布时间: 2022-04-13 02:18

  网页 抓取 innertext 试题(

国家最新行政区划的网址为-8使用ie参数)

  最近在做一个项目,需要使用行政区划的,可是在网上搜索了很久,都没有查到有最新的现成的文档。我知道在国家统计局的网站上是有整个国家的行政区划的,但是也是一个网页一个网页的,很难用复制粘贴的方式获取。那我就实现一个抓取网页的功能,从国家统计局的网站上抓取行政区划的数据。

网页的获取是一个很简单的过程,我们定义WebRequest 类来访问网址,然后WebResponse 类来接收响应的数据,然后用StreamReader 来读取流信息就可以了,下面是抓取网页并返回网页内容的函数,代码如下:

   /// 获取网页内容

///

/// 网址

/// 编码

///

private string GetRequestInfo(string myUrl, string encoding)

{

WebRequest request = WebRequest.Create(myUrl);

WebResponse response = request.GetResponse();

StreamReader reader = new StreamReader(response.GetResponseStream(),

Encoding.GetEncoding(encoding));//gb2312 "utf-8"

string htmlContent = reader.ReadToEnd();

System.Threading.Thread.Sleep(1);

return htmlContent;

}

  函数中的编码是我们要注意的。有的中文网页使用gb2312,有的使用utf-8。我们需要根据网页的编码来传递参数。

  国家最新行政区划的网站是,用ie查看源码,看到区划代号的css类型是MsoNormal。这个很重要,后面我们在使用HtmlAgilityPack dll解析URL的时候会用到。HtmlAgilityPack 是一个用于解析 URL 内容的开源工具。它专门用于解析网页的内容。现在我只使用 .net 框架 2.0。

   ///

/// 解析

///

private List AnalyHtmlContentSinglePage(string htmlContent, string trClass)

{

List list = new List();

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();

doc.LoadHtml(htmlContent);

HtmlAgilityPack.HtmlNodeCollection trList = doc.DocumentNode.SelectNodes(trClass);

if (trList != null)

{

foreach (HtmlAgilityPack.HtmlNode hn in trList)

{

string code = string.Empty;

string name = string.Empty;

string flag = string.Empty;

code = hn.InnerText;

if (code.Contains("     "))

{

flag = "3";

}

else if (code.Contains("    "))

{

flag = "2";

}

else if (code.Contains("   "))

{

flag = "1";

}

else

{

flag = string.Empty;

}

code = code.Replace("   ", "\t");

code = code.Replace(" ", "\t");

string[] sa = code.Split(new char[] { '\t' });

code = sa[0];

for (int i = 1; i < sa.Length; i++)

{

if (string.IsNullOrEmpty(sa[i])) continue;

name = sa[i].Trim();

}

list.Add(code + "\t" + name);

}

}

return list;

}

  我把获取到的网页内容传递给这个函数,类型是MsoNormal。我们只能通过空格来识别行政级别。省空间少,市级空间比省长,县或区空间最长。这些是通过查看网页的源代码获得的。

  只要使用这两个功能,就可以获取网页并进行分析,获取行政区划。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线