700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 电话号码归属地查询——利用邮编从网络上抓取地址信息(1)

电话号码归属地查询——利用邮编从网络上抓取地址信息(1)

时间:2024-04-05 21:29:50

相关推荐

电话号码归属地查询——利用邮编从网络上抓取地址信息(1)

---------------------- android培训、java培训、期待与您交流! ----------------------

之前的工作已经将文本中的数据导入到了数据表中,查看一下已导入到数据表的信息(下图),我们发现其实这个表中没有我们要的地址信息,只有手机号段、电话区号、邮编号码和移动运营商的名字。但是我们知道,每个地方的固话区号和邮编是 唯一的,那么是否可以利用区号或邮编获取到地址信息呢?答案是肯定的。对于每个看到这边文章的朋友们来说这一定不是什么难事。只需到网上随便搜搜就会发现好多这样的免费服务。

我找到的服务如下图:

找到这样的服务,确实可以利用邮编查到相应的地址信息。但我们总不能从数据库中取出数据,一个个查再手动添加到数据表中吧??这样当然也可以,但效率太低,太繁琐了,还容易出错。那是否可以用程序来自动提取相应的地址信息。要回答这个问,先得知道访问的url信息,邮编号码作为查询的关键字,又是如何处理的呢???请看下图的url信息:

仔细分析这个url信息,不难发现,关键字邮编是紧跟“wd=”后边的,其他的字符都是固定不变的。为了验证这个问题,多查几个邮编试试,发现确实如此。知道这个规律,那就好办了。我们可以在每次提交请求时,动态的更换关键字信息就行了。再将网页内容下载到本地,再将相应的地址信息提取出来,存进数据表就行了。

那么又如何向服务器提交请求,下载网页内容呢??不知道可以问百度谷歌。通过查找网络及查看帮助,我们知道向服务器提交请求的类有:HttpWebRequest、WebRequest,其中WebRequest有相关方法:Create(string url),GetResponse().获取服务器回应的类有:HttpWebResponse、WebResponse,其中HttpWebResponse有方法GetResponseStream()用于获取网页内容的数据流。

知道了这些,那我们来试着写个向服务器发出请求,下载网页内容:

1: /// <summary>

2:/// 下载网页内容

3:/// </summary>

4:/// <param name="url"></param>

5:/// <returns></returns>

6:public string DownLoad(string mail)

7:{

8: string url = "/post/s?wd="+mail+"&p=mini&rn=20";

9: try

10: {

11: HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);

12: HttpWebResponse response = (HttpWebResponse)req.GetResponse();

13: Stream stream = response.GetResponseStream();

14: byte[] bytes = new byte[2500];

15: int length = stream.Read(bytes, 0, bytes.Length);

16: if (length > 0)

17: {

18: return Encoding.Default.GetString(bytes);

19: }

20: else

21: {

22: return "";

23: }

24: }

25: catch(Exception ex)

26: {

27: Console.WriteLine(mail + ":" + ex.Message);

28: throw new Exception();

29: }

30:}

在写个程序将获取到的网页内容给存起来。如下:

1: /// <summary>

2:/// 保存网页信息

3:/// </summary>

4:/// <param name="html">网页信息参数</param>

5:public void SaveHtml(string html)

6:{

7: using (FileStream fw = new FileStream(@"E:\html.txt", FileMode.Create, FileAccess.Write))

8: {

9: int length = html.Length;

10: byte[] bytes = new byte[length];

11: bytes = Encoding.Default.GetBytes(html);

12: fw.Write(bytes, 0, bytes.Length);

13: }

14:

15:}

写个调用的语句来测试下:

1: void Test()

2:{

3: string html=DownLoad("210000");

4: SaveHtml(html);

5: MessageBox.Show("下载完成!!");

6:}

程序运行完成后,打开“E:\heml.txt”文件,的确下载到了页面的Html代码。只是我们会发现网页代码不全,这说明给的缓存太小了,将这句“byte[] bytes =newbyte[2500];”2500设置大点的数字就行了。

好了,关于如何下载网页文件,就到此为止了。下篇我们将解决如何从文件中提取地址信息的问题。

---------------------- android培训、java培训、期待与您交流! ----------------------

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。