set_time_limit(0);

date_default_timezone_set("Asia/shanghai");

//自定义抓取图片地址

$url = 'http://detail.tmall.com/item.htm?spm=a220m.1000858.1000725.19.VhK2kI&id=27450304248&areaId=&user_id=230988517&is_b=1&cat_id=2&q=iphone+5&rn=ad04038a8821d017f0a878c5cf9f448a';

$ip_arr = get_ips();

$ip = trim(get_rand_ip($ip_arr)); //随机ip

$content = get_content_by_url($url, $ip);

//获取标题

preg_match("/

[\s]*(.*)[\s]*/i", $content, $match_title);

if(isset($match_title[1]) && $match_title[1]){

$title = $match_title[1];

echo mb_convert_encoding('标题为:', 'GBK', 'UTF-8') . $title . '
';

}else{

preg_match("/

[\s]*(.*)/i", $content, $match_title);

if(isset($match_title[2]) && $match_title[2]){

$title = $match_title[2];

echo mb_convert_encoding('标题为:', 'GBK', 'UTF-8') . $title . '
';

}else{

echo mb_convert_encoding('没有获取到标题,程序终止:', 'GBK', 'UTF-8');

exit;

}

}

//获取价格

if($price = get_price($url)){

echo mb_convert_encoding('价格为:', 'GBK', 'UTF-8') . $price . '
';

}else{

echo mb_convert_encoding('没有获取到价格,程序终止:', 'GBK', 'UTF-8') . '
';

}

//获取图片

preg_match("/

if(isset($match_img[1]) && $match_img[1]){

$img_url = $match_img[1];

echo mb_convert_encoding('图片地址为:', 'GBK', 'UTF-8') . $img_url . '
';

echo "";

}else{

echo mb_convert_encoding('没有获取图片地址,程序终止:', 'GBK', 'UTF-8');

exit;

}

function get_rand_ip($ip_arr){

if(empty($ip_arr)){

return false;

}

$ip_count = count($ip_arr);

$rand_num = rand(0, $ip_count-1);

return trim($ip_arr[$rand_num]);

}

function get_ips(){

$fp = fopen('ip.txt', 'r+');

$ip_arr = array();

while($line=fgets($fp)){

array_push($ip_arr, $line);

}

fclose($fp);

return $ip_arr;

}

function get_content_by_url($url, $ip = '127.0.0.1'){

if(empty($url)){

return;

}

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$url);

curl_setopt($ch,CURLOPT_REFERER, $url);

curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.0)');

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);

if(!empty($ip)){

curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:' . $ip, 'CLIENT-IP:' . $ip));  //构造IP

}

$content = curl_exec($ch);

return $content;

}

function get_price($url){

if(empty($url)){

return;

}

preg_match("/id=(\d+)/i", $url, $id_arr);

if(!empty($id_arr)){

$id = $id_arr[1];

}else{

return;

}

$item_url='http://mdskip.taobao.com/core/initItemDetail.htm?itemId=' . $id;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $item_url);

//设置来源链接,这里是商品详情页链接

curl_setopt($ch,CURLOPT_REFERER, $url);

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/0 (Windows; U; Windows NT 0; zh-CN; rv:3)");

curl_setopt($ch,CURLOPT_HEADER,0);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch,CURLOPT_POST,1);

$result = curl_exec($ch);

$info = curl_getinfo($ch);

curl_close($ch);

//去除回车、空格等

$result=str_replace(array("\r\n","\n","\r","\t",chr(9),chr(13)),'',$result);

//将json数据中,以纯数字为key的字段加上双引号,例如28523678201:{"areaSold":1}转为:"28523678201":{"areaSold":1},否则json_decode会出现错误

$mode="#([0-9]+)\:#m";

preg_match_all($mode,$result,$s);

$s=$s[1];

if(count($s)>0){

foreach($s as $v){

$result=str_replace($v.':','"'.$v.'":',$result);

}

}

//将字符编码转为utf-8,并且将中文转译,否则json_decode会出现错误

$result=iconv('gb2312','utf-8',$result);

$str=array();

$mode='/([\x80-\xff]*)/i';

if(preg_match_all($mode,$result,$s)){

foreach($s[0] as $v){

if(!empty($v)){

$str[base64_encode($v)]=$v;

$result=str_replace('"'.$v.'"','"'.base64_encode($v).'"',$result);

}

}

}

$result=json_decode($result,true);

//这里得到的数据中,中文数据被转译,下面将中文数据解析

$result=arr_foreach($result,$str);

foreach($result['defaultModel']['itemPriceResultDO']['priceInfo'] as $result_price){

if(isset($result_price['promotionList'])){

$price = $result_price['promotionList'][0]['price'];

}else{

$price = $result_price['price'];

}

break;

}

return $price;

}

function arr_foreach ($arr,$str)

{

if (!is_array ($arr))

{

return false;

}

foreach ($arr as $key => $val )

{

if (is_array ($val))

{

$arr[$key]=arr_foreach($val,$str);

}

else

{

if(!empty($val)){

if($str[$val]){

$arr[$key]=$str[$val];

}

}

}

}

return $arr;

}

?>

注意:抓取内容的时候,注意这一行 curl_setopt($ch,CURLOPT_REFERER, $url);

抱歉,没找到上传附件的地方,ip.txt没上传。您可以百度下,有很多ip库,下载一个就能用,一行一个ip

php天猫列表数据抓取,php 抓取天猫产品数据-标题,价格,首图片相关推荐

  1. 2021春项目需求记录 python实现模拟登录+爬取NASA Modis 上的产品数据

    python实现模拟登录+爬取Nasa Modis 上的产品数据 概述 需求分析 基本思路 代码 概述 3月的中旬时候参与了学校的一个大创项目,作为本科生,本人只是摸鱼打杂,负责了其中的一个功能模块: ...

  2. php怎么爬取亚马逊的数据,php 抓取亚马逊中国产品数据-标题,价格,首图片

    set_time_limit(0); date_default_timezone_set("Asia/shanghai"); //自定义抓取图片地址 $url = 'http:// ...

  3. 如何从亚马逊抓取产品数据?

    "为什么我们需要抓取亚马逊的数据?",也许这是您可能会问的第一个问题. 亚马逊是美国最大的电子商务公司,拥有世界上种类最多的产品.将产品数据抓取下来有很多有价值的用途.以下是为您列 ...

  4. php天猫列表数据抓取,如何翻页抓取网页数据——以采集天猫搜索列表为例

    我们在抓取数据时,通常不会只抓取网页当前页面的数据,往往都会继续抓取翻页后的数据.本文就为大家介绍,集搜客GooSeeker网络爬虫如何在进行数据抓取时,自动抓取翻页后的数据. 在MS谋数台的爬虫路线 ...

  5. 数据从业者必读:抓取了一千亿个网页后我才明白,爬虫一点都不简单

    编者按:互联网上有浩瀚的数据资源,要想抓取这些数据就离不开爬虫.鉴于网上免费开源的爬虫框架多如牛毛,很多人认为爬虫定是非常简单的事情.但是如果你要定期上规模地准确抓取各种大型网站的数据却是一项艰巨的挑 ...

  6. python抓取数据时失败_爬取数据缺失的补坑,Python数据爬取的坑坑洼洼如何铲平...

    渣渣业余选手讲解,关于爬取数据缺失的补坑,一点点关于Python数据爬取的坑坑洼洼如何铲平,个人的一些心得体会,还有结合实例的数据缺失的补全,几点参考,仅供观赏,如有雷同,那肯定是我抄袭的! 在使用P ...

  7. pythonallowpos_利用Python抓取并分析京东商品评论数据

    2.1 内容简介 本章主要介绍如何利用Python抓取京东商城商品评论信息,并对这些评论信息进行分析和可视化.下面是要抓取的商品信息,一款女士文胸.这个商品共有红色,黑色和肤色等颜色, 70B到90D ...

  8. python新闻评论分析_使用 python 抓取并分析京东商品评论数据

    本篇文章是python爬虫系列的第三篇,介绍如何抓取京东商城商品评论信息,并对这些评论信息进行分析和可视化.下面是要抓取的商品信息,一款女士文胸.这个商品共有红色,黑色和肤色三种颜色, 70B到90D ...

  9. python爬虫抓取动态网页数据_python网络爬虫抓取ajax动态网页数据:以抓取KFC门店地址为例...

    一,尝试用BeautifulSoup抓取 先打开KFC网站门店列表页面:http://www.kfc.com.cn/kfccda/storelist/index.aspx 可以看到门店列表如下图: 打 ...

最新文章

  1. javascript冷门吗_分享几个html5冷门小知识
  2. spring map使用annotation泛型注入问题分析
  3. distcp集群迁移问题总结
  4. 7-7 mmh学长的大数模板 (20分)
  5. 【STM32 基础实验矩阵按键】
  6. Graphviz 画图教程
  7. Shell脚本中各种括号用法
  8. 合并pdf文件-批量打印
  9. 同样是路过式,登录与下载攻击区别何在?
  10. C盘清理(主要的大文件清理)
  11. excel自动增加序号
  12. VIM的初学配置文件
  13. GNU Screen的使用方法
  14. ffmpeg 命令学习
  15. 图片搜索引擎 - WebCrawler
  16. 软件测试工程师这个岗位职责是什么?具体都需要干什么?
  17. 高中计算机教学工作计划,教学工作计划
  18. warning: require(./admin.php),WordPress提示require_once() Failed opening required的解决方法
  19. Java软路由_J4105四口i211 千兆软路由 简单开箱
  20. AndroidRuntime java.lang.AbstractMethodError解决方案

热门文章

  1. 5个跨境电商开设店铺必备的好用免费工具——多账号管理/指纹浏览器/独立浏览器/跨境电商营销浏览器
  2. Win10修改host文件
  3. [Android] ListView中getView的原理+如何在ListView中放置多个item
  4. NEUOJ 711 (字典树)
  5. 分享怎么让你的微信朋友圈提高200%的赚钱能力?
  6. 转载 JBI与ESB SOA
  7. cesium地形裁剪与模型裁剪的使用
  8. 2021年学计算机玩吗,2021年计算机学校好吗
  9. Winform打开目录或文件
  10. python爬虫No.1|爬取网易云音乐歌手的前50首歌曲ID及名字