客户信息采集(慧聪360)

客户信息采集(慧聪360)

客户信息采集器,主要是获取HTML然后分析。大虾请漂过,不要打击我这个菜鸟。

先上几个辅助方法。

     ///
/// 获取html文件,需引用MSXML2
///

///URL地址
///
publicstring GetBody(string url)
{
string s ="";
MSXML2.XMLHTTP26 _xmlhttp
=new MSXML2.XMLHTTP26();
_xmlhttp.open(
"GET", url, false, null, null);
_xmlhttp.send(
"");
if (_xmlhttp.readyState ==4)
{
s
= Encoding.Default.GetString((byte[])_xmlhttp.responseBody);
}
return s;
}
    
///
/// 正则匹配
///

///需要匹配的字符
///正则表达式
///
private Match getvalue(string str, string matchStr)
{
Regex rg
=new Regex(matchStr, RegexOptions.Multiline | RegexOptions.Singleline);
return rg.Match(str);
}
其实原理很简单,根据URL获取到HTML源码之后,通过正则表达式匹配,获取需要的客户信息其中包括公司名称、联系人、联系地址、手机、联系电话(当然前提是客户有留下这些方式)。废话不多说,下面来介绍下匹配方法。
我要采集的是关键字为:杭州;地址为:杭州。所以地址为:http://s.hc360.com/company/%B9%AB%CB%BE.html?L=7&e=49&m=2&v=4&z=%D6%D0%B9%FA%3A%D5%E3%BD%AD%CA%A1%3A%BA%BC%D6%DD%CA%D0
然后寻找分页规则,不难发现URL中有的e的参数每次翻页都在变,所以规则为:(i * 24 + 1),所以新URL为:http://s.hc360.com/company/%B9%AB%CB%BE.html?L=7&e=" + (i * 24 + 1) + "&m=2&v=4&z=%D6%D0%B9%FA%3A%D5%E3%BD%AD%CA%A1%3A%BA%BC%D6%DD%CA%D0
//采集HTML为源代码,页码为1000页
for (int i =1; i <1000+1; i++)
{
string Url ="http://s.hc360.com/company/%B9%AB%CB%BE.html?L=7&e="+ (i *24+1) +"&m=2&v=4&z=%D6%D0%B9%FA%3A%D5%E3%BD%AD%CA%A1%3A%BA%BC%D6%DD%CA%D0";
string Body = GetBody(Url);
}

 接下来就是获取列表页中公司联系方式页面的URL地址,这需要通过正则表达式来匹配。

接下来又是获取公司联系方式页面的HTML源代码。

               //循环获取每个公司的详细情况
foreach (var Urls in loginID)
{
if (Urls !="")
{
Body
= GetBody(Urls);
}
}

获取到取公司联系方式页面的HTML源代码之后又是通过正则表达式来匹配了。

Match Photos = getvalue(Body, "手    机:(?.*?)");//(?.*?)
//如果该公司没有记录手机号码,不予采集
if (Photos.Groups["Photos"].Value.Trim() !="")
{
Match Names
= getvalue(Body, "infoname=(?.*?)&infoid=");//(?<Names>.*?)
string mingcheng = Names.Groups["Names"].Value.Trim();
Match Tel
= getvalue(Body, "电    话:(?.*?) ");//(?<Tel>.*?)
string dianhua = Photo.Groups["Tel"].Value.Trim();
string shouji = Photos.Groups["Photos"].Value.Trim(); //(?<Photos>.*?)
Match Likes
= getvalue(Body, ".*?)\">");//(?<Likes>.*?)
string lianxiren = Likes.Groups["Likes"].Value.Trim().Replace(" ", "");
Match Add
= getvalue(Body, "地    址:(?.*?)");//(?<Add>.*?)
string dizhi =Add.Groups["Add"].Value.Trim();
}

这样就能够完整的匹配出各项联系方式了。然后可以保存数据库,之后就是导入TXT等操作了。

因为需要即时显示采集进度,所以采用多线程来采集。

客户信息采集(慧聪360)_第1张图片

 

最后还做了个展示的小程序,贴个界面吧!

客户信息采集(慧聪360)_第2张图片

你可能感兴趣的:(客户信息采集(慧聪360))