网站交易,网站买卖,网站出售,站长交易,域名交易,源码交易,推广交易,空间交易,素材交易 告诉朋友 MSN/QQ/Blog/BBS 站长工具 繁體中文 订阅该地区的交易信息  
热门:域名交易 网站交易 网站出售 域名出售 源码交易 更多
 您当前的位置:站易网 >> 站长资讯 >> 网站运营 >> 建站心得
名片网名片信息采集技术及过程
发布时间:2008-2-24 11:22:09 作者:牛魔王托世 来源:http://www.dssz.net【字体:

内容简介:
    www.mingpian.com 是一个上传一张名片,就可以交换两张名片的网站,上面的明片信息据说有400w张以上了,登录名片网,可以查到世界500强等企业的治理层及员工名片。其中收录量高居榜首的是微软公司,2500多名员工的职位和联系方式赫然在列。以微软公司上海分公司为例,……

名片 过程 技术 采集 信息 id place newpath filename



www.mingpian.com 是一个上传一张名片,就可以交换两张名片的网站,上面的明片信息据说有400w张以上了,登录名片网,可以查到世界500强等企业的治理层及员工名片。其中收录量高居榜首的是微软公司,2500多名员工的职位和联系方式赫然在列。以微软公司上海分公司为例,从前台接待到财务部经理到分公司总经理的手机号码和办公固定电话皆可一目了然,这似乎也成为名片网实力的的象征。正是有了这些珍贵的名片资源,这家名片网的月点击量才会高达500万以上。

但假如你没有200w张名片,又如何跟他交换哪400w张呢?哪只有交钱了,交钱也不便宜,平均一块钱看一张。本文就教你如何免费把所有名片信息都采集下来,放到自已的数据库里,用来查询或统计信息都方便。又或者自已再弄个明骗网出来。



采集难点:

一、免费采集:首先就要看看这个网站的规则,上传一张名片,就可以下载两张,就是1:2的比例获得名片了,但我可没有这么多名片,哪只有上传假的名片了,因为他们是上传了名片,马上就送积分,并不是验证真假后才给你积分,你就可以利用这个时间差,用一张假的换两张真的名片了。



二、名片id没规律:他们的名片id是以英文加数字的方式(/bizcard/e1c76e112031.aspx),并不是按线性数字增加的方式,并不连续的,而且还是12位长度,穷举是没可能的事了。我们只有通过搜索列表,提取id的方式获得所有名片的id了。

三、搜索id:这个网站假如帐号不是vip会员,就只能搜索到前100张名片,也就是说,我们只有成为vip会员才行了,要成为vip方式有两个:交188元或者试用vip(一周,要提供手机验证),要采集几百w张名片,并不是一两小时的事,名片网的网速并不快,采集几小时后被发现封帐号是很正常的事。所以,交钱或手机验证都是不可靠的。刚好他们的手机验证部分有漏洞,验证码为4位,可以通过穷举的方式,5分钟内就可以用任意一个手机号码通过验证。



好了,现在就开始正式采集的过程了。

1、首先,我们先把他们的地区目录的地区id值取出来,下载 http://www.mingpian.com/search/searcharea.aspx到本地电脑。(get_page.php)

<?php

preg_replace("/cityid=(\d+?)\">(.+?)</ies", "getarea('\\1', '\\2')", file_get_contents('http://www.mingpian.com/search/searcharea.aspx'));


function getarea($place, $name)

{

global $area;

$area[$place] = iconv("utf-8", "gbk", $name);

}

?>

上面这段代码就可以把地区id保存到 $area 的数组里面。我们再打开 /search/search.aspx?cityid={$地区id}&page=1 就可以把每个地区有多少张名片的记录取出来了。

把这里的地区,地区名字,最大页数都存进数据库里

数据库脚本:

create table `mp` (

`place` int(10) unsigned not null auto_increment,

`area` varchar(100) character set latin1 collate latin1_bin not null default '',

`page` int(10) unsigned not null default '0',

primary key (`place`),

) engine=myisam;



然后,我们通过以下代码,把每个地区的所有id页面都保存到本地的电脑上面,

<?php //get_page.php

$result = $db_site->query("select * from mp");

while($row = $db_site->fetch_array($result)){

$newpath = __site_root . "/mingpian/cardid/$row[place]";

if(!is_dir($newpath) && !file_exists($newpath)){

mkdir($newpath, 0777);

}

for($i = 1; $i <= $row['pages']; $i++){

if($i > 25000) //windows目录最多保存32768个文件,文件太多列目录时会当机,所以大于25000个文件时候,就要建新目录保存了

$filename = $newpath . "/25000/$i.html";

else

$filename = $newpath . "/$i.html";

echo $filename . "\n";

if(!file_exists($filename) || filesize($filename) < 100) {

$content = posttohost($row['place'], $i); //这个函数就是用 file_get_contents("/search/search.aspx?cityid={$place}&page={$page}");

$fp = fopen($filename, "w");

fwrite($fp, $content);

fclose($fp);

}

}

}

2、下一步,我们就是把这所有列表的id值取出来,保存到数据库里,因为id值太多了,数据库处理起来比较方便点,要不然的话,php肯定要挂了(内存不足)

<?php //get_card.php

$result = $db_site->query("select * from mp");

while($row = $db_site->fetch_array($result)){

$newpath = __site_root . "/mingpian/cardid/$row[place]";

if(!is_dir($newpath) && !file_exists($newpath)){

mkdir($newpath, 0777);

}

for($i = 1; $i <= $row['pages']; $i++){

if($i > 25000)

$filename = $newpath . "/25000/$i.html";

else

$filename = $newpath . "/$i.html";

echo $filename . "\n";

$content = implode("", file($filename));

preg_replace("/bizcard\/(.+?)\.aspx\"[^>]*>(.+?)<\/a>/ies", "getcardid('\\1', '\\2', $row[place])", $content);

}

}


function getcardid($id, $name, $place)

{

global $db_site;

$name = iconv("utf-8", "gbk", $name);

echo "id : $id name : $name place : $place\n";

$db_site->query("replace into mp_card values ('$id', '" . addslashes($name) . "', '$place')");

}

?>




数据库脚本:

drop table if exists `mp_card`;

create table `mp_card` (

`id` varchar(20) not null,

`name` varchar(50) not null,

`place` int(10) unsigned not null,

primary key (`id`)

) engine=myisam default charset=latin1;

3、跟着,我们先运行我们的充值代码,就是上传假的名片信息,好让我们的帐户增加积分。请参看:inc_cost.php,就是循环地上传名片信息,而且电话号码用随机数。

4、同一时间,我们就可以从数据库里查找所有id值,然后根据id值一个一个的下载名片页面了。下载后并把数据库标志设为已下载。以便帐号被封的时候,我们不用从头再来嘛。文件代码在 buy_card.php里。

5、在下载名片的时候,每隔十分钟看看新下载的文件,是否少于5k,就表示你的帐号被封了,把inc_cost.php跟buy_card.php停了,换个vip帐号继续。

另外:inc_cost.php跟buy_card.php最好使用两台电脑分别运行。



相关文件说明:

test_mobil.php //用任意手机号码通过验证成为名片网的vip会员。一般5分钟就可以,就是循环穷举9999次。

get_page.php //取http://www.mingpian.com/search/searcharea.aspx里的地区id及地区名称,保存到数据库

get_card.php //将所有名片列表页面保存到本地电脑,一般2小时就可以完成了

get_cardid.php //将名片列表里的名片id值提取出来,并保存到数据库里面,视乎你的电脑速度,我的只用了10分钟。


以下两个文件循环执行(被封帐号后要修改里面的用户cookie信息),这步骤可能要几天时间,视乎你的网速还有名片网的服务器速度。北京的朋友应该方便些,因为名片网的服务器就在北京!

inc_cost.php //上传假名片数据,获得积分。

buy_card.php //从数据据里查询名片id值,下载名片信息,下载成功的id设标志位,避免重复采集。


以上所有文件包下载地址:http://www.dssz.net/item/21377-ming_pian_wang_cai_ji_cheng_xu_yuan_dai_ma_bao.html



 编辑:哈韩异族 加入收藏 发送给好友 打印此文
上一篇:新手站长月入千元的简单方法 下一篇:李黑:经营博客的十个秘决
   热门资讯
·中国联通收购10010.com 具体金
·网站转让需要办理什么?
·世通华纳宣布获5000万美元投资
·微软5千万美元收购英国网络地图
·雅虎大股东暗示微软提价即让步
·微软并购Yahoo:Google的恐惧
·雅虎拒绝了微软每股31美元的收
·炒楼炒股不如炒流量——记草根
·迅雷免费链接电影《伤城》 被判
·微软宣布446亿美元收购雅虎
   推荐资讯
·中国联通收购10010.com 具体金额不详
·网站转让需要办理什么?
·世通华纳宣布获5000万美元投资
·微软5千万美元收购英国网络地图公司
·雅虎大股东暗示微软提价即让步 将出售股
·微软并购Yahoo:Google的恐惧
·雅虎拒绝了微软每股31美元的收购提议
·炒楼炒股不如炒流量——记草根富翁刺客
·迅雷免费链接电影《伤城》 被判赔偿15万
·微软宣布446亿美元收购雅虎
设为首页 | 加入收藏 | 关于我们 | 友情连接 | 广告服务 | 免责声明 | 付款方式 | 留言反馈 | 联系方式
Copyright © 2007-2008 Zhan1.Com ,Inc. All rights reserved. 站易网 版权所有
网站备案编号:吉ICP备07500049号