今天通過查資料了解到web的頁面抓取功能,應用HttpWebRequest和HttpWebResponse功能,從http://www.showji.com網站中抓取歸屬地信息
應該說這個方法是從別的論壇中學習來的,具體過程如下:
通過IE9的網絡監控功能:
通過分析抓取的數據,將獲取歸屬的地信息
分析一條數據我們可以得到以下信息
返回的是一條json數據,我們通過http://api.showji.com/Locating/www.show.ji.c.o.m.aspx?m=18311095178&output=json&callback=querycallback×tamp=1411465926173 這個網址也可得到相對於的JSON數據;
當我們把這個網址從電話后面截取只用前一半的時候頁面數據就變成下面這樣:XML文件
剩下的步驟就簡單了,只要通過分析獲得的XML文件,我們就可以得到我們想要的數據
web頁面具體代碼如下
1 protected void Button1_Click(object sender, EventArgs e) 2 { 3 string Phone = this.Txt_Con.Text; 4 string url = "http://api.showji.com/Locating/www.show.ji.c.o.m.aspx?m=" + Phone; 5 6 foreach (string item in GetHttpXml(url)) 7 { 8 9 TextBox1.Text += item + "\n"; 10 } 11 } 12 13 public string[] GetHttpXml(string url) 14 { 15 XmlDocument xml = new XmlDocument(); 16 xml.Load(url); 17 18 XmlNamespaceManager xmlNm = new XmlNamespaceManager(xml.NameTable); 19 xmlNm.AddNamespace("content", "http://api.showji.com/Locating/"); 20 XmlNodeList nodes = xml.SelectNodes("//content:QueryResult|//content:Mobile|//content:Province|//content:City|//content:Corp|//content:Card|//content:AreaCode|//content:PostCode", xmlNm); 21 if (nodes.Count == 8) 22 { 23 if ("True".Equals(nodes[1].InnerText)) 24 { 25 26 return new string[] { "手機號:"+nodes[0].InnerText, "運行商:"+nodes[2].InnerText, "歸屬省:"+nodes[3].InnerText, "歸屬市:"+nodes[4].InnerText,"城市區號:"+nodes[5].InnerText,"城市郵編"+nodes[6].InnerText}; 27 } 28 } 29 return new string[] { "FALSE" }; 30 }
運行效果: