100行PHP代码采集阿里巴巴商家信息
——authored by 李家优 Alibaba商家信息采集说明 一、如何获取商家列表页面链接 http://www.alibaba.com/corporations/jiangmen/CN——————————–.html 例如此页面为alibaba上所有jiamen商家信息列表,也能看到 Page:1/29 字样 http://www.alibaba.
——authored by 李家优
Alibaba商家信息采集说明
一、 如何获取商家列表页面链接
http://www.alibaba.com/corporations/jiangmen/CN——————————–.html
例如此页面为alibaba上所有jiamen商家信息列表,也能看到Page:1/29字样
http://www.alibaba.com/corporations/jiangmen/CN——————————–/2.html?tracelog=24581_list_turnpage
可发现末尾变成了2.html……
把?以及后面的参数去掉,并修改3、4、5试试
http://www.alibaba.com/corporations/jiangmen/CN——————————–/2.html
http://www.alibaba.com/corporations/jiangmen/CN——————————–/3.html
http://www.alibaba.com/corporations/jiangmen/CN——————————–/5.html
发现通用的列表页面链接应该是:
http://www.alibaba.com/corporations/jiangmen/CN——————————–/{$page}.html
二、 从列表页面获取所有页面内容
由于alibaba防采集,所以我们伪装成IE浏览器的HTTP访问。
$HTTP_SESSION=_rand();
$HTTP_SESSION;
$HTTP_URL=”http://www.alibaba.com/corporations/jiangmen/CN——————————–/”.$page.”.html”;
$ch = curl_init();
curl_setopt ($ch,CURLOPT_URL,$HTTP_URL);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_USERAGENT,”Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)”);
$res = curl_exec($ch);
curl_close ($ch);
?>
这样列表页的内容就赋值给了$res
三、 如何从列表页面获取具体商家链接
以第一页为例
http://www.alibaba.com/corporations/jiangmen/CN——————————–/1.html
查看源代码,可以发现所有商家名称的链接都是此样式
Jiangmen Ronda Battery Co., Ltd.
即http://{CompanyName}.en.alibaba.com
用正则从$res的内容中找出所有的{CompanyName}:
preg_match_all(‘/href\s*=\s*["|\']?([^\s"\'>]*).en.alibaba.com\”/i’,$res,$arr);
这样$arr中就是列表第一页中所有的商家的链接了。
四、 如何采集商家信息
首先循环得到单个商家的链接
foreach($arr[1] as $a=>$web)
?>
用$web拼上.en.alibaba.com就是商家链接了
例如http://rondabattery.en.alibaba.com/
浏览发现 所有公司的联系信息都是http://rondabattery.en.alibaba.com/contactinfo.html
再伪装IE采集一次单个商家的联系信息页面
$HTTP_SESSION=_rand();
$HTTP_SESSION;
$HTTP_Server=$web;
$HTTP_URL=”.en.alibaba.com/contactinfo.html“;
$ch1 = curl_init();
curl_setopt ($ch1,CURLOPT_URL,$HTTP_Server.$HTTP_URL);
curl_setopt($ch1,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch1,CURLOPT_USERAGENT,”Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)”);
$res1 = curl_exec($ch1);
curl_close ($ch1);
?>
这样$res1中就是这个rondabattery公司联系信息页面的内容了。
五、 如何采集联系人、电话等详细信息
http://rondabattery.en.alibaba.com/contactinfo.html
查看源代码可以发现
公司名等信息都是这样的格式
在用正则匹配就行了:
preg_match(“/Company Name:(.*?)/s”,$res1,$Cname);
这样$Cname中就是绿色的内容
显然