php网页抓取浏览者手机号码_提供一个网页抓取hao123手机号码归属地的例子
有段时间不写博客了,最近工作压力比较大,大家在忙什么,新近安装了Win7的操作系统,感觉很不错,还体验了一把IE9,里面的开发人员工具很好用
说到这个大家可以用火狐的谷歌的都行,在这个例子中我主要使用IE9自带的分析一下hao123的手机号码归属地查询的问题。
我们先来看看下面的图片吧
在hao123的这个界面里我们只要输入一个手机号不管是移动,联通,电信的都可以,单击查询就可以直接查询到归属地,和号码类型,网上这样的
网站很多,我就以这个为例子吧,那我们怎么样把这些信息放到我们自己的网站上呢?
我们先来分析一下,其实很方便,我们在IE9下打开这个界面然后在工具---开发人员工具,或是直接安f12也是一样的效果,我们安界面定位到如下图
我们先单击网络然后单击开始捕获,这个时候我们再单击一下查询按钮看看会出现什么情况
是不是出现两个整个,第一个很明显是加载我们所输入号归属地信息,第一个是加载一个图片,对我们没有任何用处,这里不管它,现在我们
来单击一下第一个方法看看捕获到了什么
phone.callBack({"Mobile":"13888888888","QueryResult":"True","Province":"云南","City":"昆明","AreaCode":"0871","PostCode":"650000","Corp":"中国移动","Card":"GSM"});
用手机号,省,市,还有邮编,号码类型等信息。这样看的话是不是我们直接把这个地区复制到地址栏里就行了,那咱们一起来看看效果吧
果然没错就是我们想要的东西,大家别急,其它还可以更简单,我们来看一下这个URL
直接放到地址栏里试试效果
呵呵,很神奇吧,居然得到的是一个Xml文件
这就像是我们在调用WebServces一样简单了,我们只要写一个程序请求这个地址就可以得到我们想要的效果了。
随便新建一个项目,一起来看一下
我就不一步一步的分析了大家直接看我的代码
usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Net;usingSystem.IO;usingSystem.Security.Cryptography.X509Certificates;usingSystem.Net.Security;usingSystem.Security.Cryptography;usingSystem.Xml;namespaceccbText
{publicpartialclassForm2 : Form
{publicForm2()
{
InitializeComponent();
}privatevoidForm2_Load(objectsender, EventArgs e){}这个方法在这里没有用到,大家可以做为参考//传入URL返回网页的html代码//URL///publicstringGetUrltoHtml(stringUrl)
{
StringBuilder content=newStringBuilder();try{//与指定URL创建HTTP请求HttpWebRequest request=(HttpWebRequest)WebRequest.Create(Url);
request.KeepAlive=false;//获取对应HTTP请求的响应HttpWebResponse response=(HttpWebResponse)request.GetResponse();//获取响应流Stream responseStream=response.GetResponseStream();//对接响应流(以"GBK"字符集)StreamReader sReader=newStreamReader(responseStream, Encoding.GetEncoding("utf-8"));//开始读取数据Char[] sReaderBuffer=newChar[256];intcount=sReader.Read(sReaderBuffer,0,256);while(count>0)
{
String tempStr=newString(sReaderBuffer,0, count);
content.Append(tempStr);
count=sReader.Read(sReaderBuffer,0,256);
}//读取结束sReader.Close();
}catch(Exception)
{
content=newStringBuilder("Runtime Error");
}returncontent.ToString();
}//好123查询,符合下列规则也可使用///返回xml///需要顺序的节点:///QueryResult(查询结果状态True,False)///Province(所属省份)///City(所属地区)///Corp(服务商)///Card(卡类型 GSM)///AreaCode(区号)///PostCode(邮编)publicstaticstring[] GetInfoByxml(stringurl,stringmobileNum)
{try{
XmlDocument xml=newXmlDocument();//xml.LoadXml("<?xml version='1.0' encoding='utf-8' ?>15890636739True河南郑州0371450000中国移动GSM");xml.Load(string.Format(url, mobileNum));
XmlNamespaceManager xmlNm=newXmlNamespaceManager(xml.NameTable);
xmlNm.AddNamespace("content","http://api.showji.com/Locating/");
XmlNodeList nodes=xml.SelectNodes("//content:QueryResult|//content:Mobile|//content:Province|//content:City|//content:Corp|//content:Card|//content:AreaCode|//content:PostCode", xmlNm);if(nodes.Count==8)
{if("True".Equals(nodes[1].InnerText))
{returnnewstring[] { nodes[0].InnerText, nodes[2].InnerText+nodes[3].InnerText, nodes[6].InnerText+nodes[7].InnerText, nodes[4].InnerText, nodes[5].InnerText };
}
}returnnewstring[] {"FALSE"};
}catch{returnnewstring[] {"FALSE"};
}
}//调用方法查询数据privatevoidbutton1_Click(objectsender, EventArgs e)
{foreach(stringiteminGetInfoByxml("http://vip.showji.com/locating/?m={0}", txtMobile.Text.Trim()))
{
richTextBox1.Text+="__"+item;
}
}
}
}
运行一下看看效果吧
我是用Winfrom做的测试,大家如果想用Asp。Net也是一样的,把我的方法复制到你的Web页面的Cs代码下就OK了。
好了我们的分析到这里就算是结束了,
在这里我再给大空补充一个关于调用带有证书的网站的调用 方法
因为带证书的都是在要验证证书文件的,我们在这里直接让他在本地回调验证,这样的话就要吧重写方法了,下在看一下回调的方法吧
//回调验证证书问题publicboolCheckValidationResult(objectsender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{//总是接受returntrue;
}
其它很简单只要在 我们上面的方法GetUrltoHtml()中加入几行代码就行了,修改后的方法
//传入URL返回网页的html代码//URL///publicstringGetUrltoHtml(stringUrl)
{
StringBuilder content=newStringBuilder();try{//与指定URL创建HTTP请求ServicePointManager.ServerCertificateValidationCallback=newSystem.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);//验证HttpWebRequest request=(HttpWebRequest)WebRequest.Create(Url);
request.KeepAlive=false;
request.UserAgent="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; MS-RTC LM 8; .NET4.0C; .NET4.0E)";
request.Method="GET";
request.Accept="*/*";//创建证书文件X509Certificate objx509=newX509Certificate(Application.StartupPath+"\\123.cer");//添加到请求里request.ClientCertificates.Add(objx509);
HttpWebResponse response=(HttpWebResponse)request.GetResponse();//获取对应HTTP请求的响应//获取响应流Stream responseStream=response.GetResponseStream();//对接响应流(以"GBK"字符集)StreamReader sReader=newStreamReader(responseStream, Encoding.GetEncoding("GBK"));//开始读取数据Char[] sReaderBuffer=newChar[256];intcount=sReader.Read(sReaderBuffer,0,256);while(count>0)
{
String tempStr=newString(sReaderBuffer,0, count);
content.Append(tempStr);
count=sReader.Read(sReaderBuffer,0,256);
}//读取结束sReader.Close();
}catch(Exception)
{
content=newStringBuilder("Runtime Error");
}returncontent.ToString();
}
php网页抓取浏览者手机号码_提供一个网页抓取hao123手机号码归属地的例子相关推荐
- 让一个网页打开的同时自动为另一个网页自动填写表单并提交
让一个网页打开的同时自动为另一个网页自动填写表单并提交 if you use "window.open" to open the window,you can ...
- 爬虫取中间文本_小小爬虫批量抓取微信推文里的图片
哈喽,大家好,今天给大家分享一个特别特别小的爬虫案例! 爬取微信推文中的图片!!!! 有人说,这有啥用,,,,万一人家推文是放的是以图片的方式放的某个PPT的内容呢,你想把它弄下来,咋整,就是爬取啦. ...
- python爬取app聊天信息_手把手教你爬取手机app中的信息
使用工具:Fiddler+基础爬虫 Fiddler是一个抓包神器,用来检查电脑和互联网之间所有的通讯内容,而且比较简单容易上手,显示的格式也比较友好. 网页基本都会爬了,现在开始要想想如何去爬手机ap ...
- python爬取微信运动_如何利用Python爬取微信运动中各个好友的运动信息
2018-11-20 回答 主要思路 从ui获取文本信息是最为简单的方法,于是应该优先逆向ui代码部分. 逆向微信apk 首先解包微信apk,用dex2jar反编译classes.dex,然后用jd- ...
- python爬取bilibili数据_如何使用Python爬取bilibili视频(详细教程)
Python爬取bilibili视频 摘要 为了解决PC端的bilibili无法下载视频的问题,使用python语言可以实现一个能够爬取bilibili某个视频资源(不包括会员视频)的程序.采用整个视 ...
- java 取整符号_浅析java中的取整(/)和求余(%)
1.取整运算符 取整从字面意思理解就是被除数到底包含几个除数,也就是能被整除多少次,那么它有哪些需要注意的地方呢?先看下面的两端代码: int a = 10; int b = 3; double c= ...
- 让FLASH背景透明-可运用于在网页内的FLASH内嵌入另一个网页
在网页中插入FLASH的时候,添加一个属性 <param name="wmode" value="transparent"> ,这样所插入的FL ...
- 网页怎么算切屏_十种切屏抓取方法(图形)
屏幕截取招招看!教你十种屏幕抓取方法(图形) 说起屏幕截图,相信大家都不会陌生:随意翻翻每期的<电 脑报> ,哪篇不是图文并茂 ? 但是对于刚刚接触电脑的朋友来说, 对如何进行抓图还摸不着 ...
- python抓取网站乱码_如何使用Python抓取网站
python抓取网站乱码 by Devanshu Jain 由Devanshu Jain It is that time of the year when the air is filled with ...
- python爬取pdf教程_#如何利用Python抓取PDF中的某些内容#python爬取pdf教程
如何利用Python抓取PDF中的某些内容 学生每天要学习,工作者要工作,家庭主妇每都要务.不论做什么,都有着相应的操作流同样就会有操作技巧.学生运用技巧学习才不会累,学得还会更快更多:工作者掌握技巧 ...
最新文章
- python matplotlib绘制折线图
- PLSQL重点问题理解和实战
- 《LINUX下动态链接库的创建与应用》
- 如何满足二级数据服务之需
- Exchange系列—Exchange自带灾难恢复工具使用
- Vue+Element!一千字带你编写合理的编辑,查看,新建!
- 天猫整站SSM-分页-总结(做个人学习笔记整理用)
- 计算机病毒属于什么类工具,什么是计算机病毒?有哪些类型
- Jenkins使用及开发
- vmware esxi 升级 SCSI RAID卡驱动
- Kafka从上手到实践 - 庖丁解牛:Consumer | 凌云时刻
- WMS系统多少钱?什么是WMS系统
- 强大的诺顿扼杀了alexa工具条
- 如何在 Next.js 中实现重定向
- win10红警2黑屏_Windows10黑屏常见情况及解决办法
- 微信小程序图集短视频去水印源码教程
- SecureCRT远程操作linux系统
- UML软件开发与建模工具Enterprise Architect发布最新版本v15.2
- 差分方程模型(一):模型介绍与Z变换
- 陌陌走向全面衰退真怪不得疫情
热门文章
- HDU 5855 Less Time, More profit(最大权闭合图)
- 毫末追击智能驾驶1000天,对战蔚小理将现胜负手
- 云计算、大数据和人工智能之间的关系
- CVE-2015-1427 ElasticSearch(Groovy 沙盒绕过 代码执行漏洞)
- 2015年秋季腾讯校园招聘开发岗笔试题(四道大题)
- Unity5.1 新的网络引擎UNET(一) 概括1
- The system clock has been set back more than 24 hours
- 你能发现什么?又能坚持什么?
- 360浏览器打不开html5文件,电脑360浏览器打不开网页原因-浏览器打不开解决方法 - 系统家园...
- 地震模拟在计算机,地震模拟计算机,seismic analog computer,音标,读音,翻译,英文例句,英语词典...