采集练习(二) php 获得hao123导航图片分类下的美女图片

  昨天看到q群里群主博客获得 hao123 里的美女图的文章 于是自己复制代码试了下,发现没有成功(群主的是用file_get_contents 直接打开)。

于是我在他的基础上,修改一番采集成功。

预览链接   http://pic.hao123.com/meinv_meinv?style=xl

用chrome 开发者工具 分析图片来源

网页是瀑布流形式的   下拉到底部执行 网页ajax 加载图片 发现 图片 和文字 来自 一个 json

http://pic.hao123.com/screen/meinv_meinv/2?v=1362645599936&act=type

参数分析 :

 meinv_meinv            是分类  美女下的美女标签

 2                            是  页数

 v=1362645599936   是  时间戳 加2位随机数 (个人认为)

 act=type                  不清楚  照着写 

遇到的问题:

1、file_get_contents 打开  http://pic.hao123.com/screen/meinv_meinv/2?v=1362645599936&act=type 时直接打开返回一个空序列

  需要 带上  header   并且必须写明  "Referer:http://pic.hao123.com/meinv/?style=xl"

2 、获得的图片链接 有部分图片没有后缀(没有解决 ,我的做法是没有后缀的图片 直接给加上 .jpg   貌似还不错。)

下面是代码:

/**
  * Created by JetBrains PhpStorm.
  * User: keygle
  * Date: 13-3-7
  * Time: 上午9:30
  * To change this template use File | Settings | File Templates.
  */
 /**
  * 返回打开url后得到的内容
  * @param $url  需要打开的url
  * @return string
  */
 function getData($url)
 {
     $opts = array(
         'http' => array(
             'timeout' => 10,
             'method' => 'GET',
             'header' => "User-Agent: Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)\r\n" . //冒充百度蜘蛛
                         "Host: pic.hao123.com\r\n" .
                         "Accept-Language: zh-CN,zh;q=0.8\r\n" .
                         "Accept-Encoding: gzip,deflate,sdch\r\n" .
                         "Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3\r\n" .
                         "Content-Type:application/x-www-form-urlencoded" .
                         "Accept: application/json, text/javascript, */*; q=0.01\r\n" .
                         "Connection: keep-alive\r\n" .
                         "Referer:http://pic.hao123.com/meinv/?style=xl\r\n" . //缺少将无法获得json数据
                         "X-Requested-With:XMLHttpRequest\r\n\r\n"
         )
     );
     $contents = stream_context_create($opts);
     return $jsonData = file_get_contents($url, false, $contents);
 }
 
 $i = 1;
 while ($i < 3) {
     $times = time() . mt_rand(10, 99);
     $url = "http://pic.hao123.com/screen/meinv_meinv/" . $i . "?v=" . $times . "&act=type";
     $dir = str_replace('\\', '/', dirname(__FILE__)) . '/hao123/';
     if (!file_exists($dir)) {
         mkdir($dir);
         chmod($dir, 0777);
     }
     $jsonData = getData($url);
     $imageData = json_decode($jsonData, true);
     foreach ($imageData as $val) {
         $images = pathinfo($val['picurl_orig']);
         $imageName = $images['basename'];
         if (!$images['extension']) {
             $imageName = $imageName . '.jpg'; //没有后缀 给加上 .jpg 后缀
         }
         $image = file_get_contents($val['picurl_orig']);
         file_put_contents($dir . $imageName, $image);
     }
     $i++;
 }

转载于:https://www.cnblogs.com/keygle/archive/2013/03/07/2948409.html

后台路径:/admcn 创始人账户密码都是admcn(后台即可修改账户密码,请第一时间修改) 操作运营: 第一天: 1:先登录后台 在基本设置里设置好域名信息(其它基本不用管/如需修改站名、关键词、描述等信息请直接用记事本或其它工具打开程序根目录的index.html文件修改保存即可); 在广告管理中添加您的广告信息(流量未过千不建议添加弹窗/其它广告任意) 2:打开名为“网址”的txt文档,按顺序一个个地到人家的站去申请流量交换,每申请一个就回到你后台点击“交换网站添加” 首次加站不要超过30个网站,因为过多流量分配不过来,保持在30个左右,加站最好在网络高峰期的时候才加。OK后每间隔6-8小时就到后台看看人家的返量情况,要是没有流量给你的就“下架”(放入未审核区/别直接删除),然后继续加新站,保持网站个数30个左右即可。 第天: 1:通常今天就可以上弹窗了,因为正常的话只需要24小时左右IP就能过千,弹窗数量表太多,也得站在用户的角度思考下,点一次是弹窗、再点一次还是弹窗,你想用户还会继续点吗!用户不点就没法与其它站交换流量,你没量给人家,人家当然也不会给你,最终你的量也会越来越少。 2:IP过千后,你要做的就是“取优去劣”,即陆续的替换反量比例少的交换站。例如流量出路>来路很多的就按倒序一一替换掉(还是放入未审核区/表直接删)。 第三天and以后: 第三天的工作和第天一样,以后也是如此。不断替换反量少的交换站,尽量做到只保留流量进出比例在1:1以上的交换站,如果30个交换站流量进出比例高于1:1,那么离日IP过万就很近了。 聪明人看到这应该差不多完全明白了。若还不明白再问我 ps:崭新的站,没有一丁点流量的站开始做的时候注意下交换站有无“去量要求”,因为部分交换站会要求先给他们送去10-20个IP,他们才会给你审核、反量。所以新站前期尽量与那些无要求或要求低的交换站做,等流量上去了再与有要求的做即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值