php爬虫教程(四)抓取数据并进行处理

原创 2016年08月30日 16:05:26

欢迎加入,新群号码:99640845


经过链接的分析,数据的分析,再加上规则的验证。

很容易的我们就get到了我们打算抓取到的数据,

so,我们就可以做我们想做的事情了。例如:

<?php
header("Content-type:text/html;charset=utf8");
set_time_limit(0);
require('client.php');
$client = new client();
$base_url = "http://t.pp.cc/";
for($i=0;$i<5;$i++) {
    echo 'page:',$i,"\n";
    $client->setHeader('Cookie', 'pt2gguin=o0056707892; RK=MBl/Y/W2em; ptcz=3c94d72206e5c146a03701b2cd5baa2dbf898ced78a80ca14afcb1c4347815d3; pgv_pvid=9725655970; g_ut=2; 3g_guest_id=-9042816631926882304; o_cookie=56707892; pgv_pvi=1429736448; eas_sid=K1S4H5o7F6b68265o2T8t240H5; luin=o0056707892; lskey=00010000d8b324c3df16b631120077e9d27f35b7d564ebc529087b9dcbc2f7556d9126fe81efd33c2d046cfd; pgv_si=s9506151424; pgv_info=pgvReferrer=&ssid=s6703251255; ptisp=ctc; ptui_loginuin=; uin=; skey=@5ZzsPWzRc; verifysession=h01a106acab1cddfbb02999f5bd471c902ebe5ab556be3b40de657fe21ffea2f01c24e692c37c2bd63c; IED_LOG_INFO=uin*|nick*%u7B11%u7740%u770B%u4F60%u54ED%20|time*1461910804; qzone_check=56707892_1461913345; rv2=802C9F7A654B37CD767C9691A7A5A7BF7F09CAB51D6341AA0B; property20=41424F4482BCD05C0A25B282DF8B360B38C86FEB7860B26C51C256022F9C1879FF87187E60572F65; qqmusic_uin=0056707892; qqmusic_key=@5ZzsPWzRc; qqmusic_fromtag=6');
    $client->setHeader('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8');
    $client->setHeader('Accept-Language', 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3');



    $url = 'https://h5.qzone.qq.com/proxy/domain/taotao.qq.com/cgi-bin/emotion_cgi_msglist_v6?uin=1312024342&inCharset=utf-8&outCharset=utf-8&hostUin=1312024342¬ice=0&sort=0&pos=40&num=20&cgi_host=http%3A%2F%2Ftaotao.qq.com%2Fcgi-bin%2Femotion_cgi_msglist_v6&code_version=1&format=jsonp&need_private_comment=1&g_tk=978158941';
    $res = $client->get($url);
    $res = substr($res, 10);
    $res = substr($res, 0, -2);
    //echo $res;die;

    $res = json_decode($res, true);
    if(@$res['msglist'] == '') continue;
    foreach ($res['msglist'] as $k => $v) {
        if (!empty($v['commentlist'])) {
            foreach ($v['commentlist'] as $k2 => $v2) {
                if(isset($arr[$v2['name']])){
                    $arr[$v2['name']]['num'] = $arr[$v2['name']]['num']+1;
                }else{
                    $client->setHeader('Cookie', 'randomSeed=824410; QZ_FE_WEBP_SUPPORT=0; cpu_performance_v8=31; pt2gguin=; RK=MBl/Y/W2em; ptcz=3c94d72206e5c146a03701b2cd5baa2dbf898ced78a80ca14afcb1c4347815d3; pgv_pvid=9725655970; g_ut=2; 3g_guest_id=-9042816631926882304; o_cookie=; pgv_pvi=1429736448; eas_sid=K1S4H5o7F6b68265o2T8t240H5; luin=; lskey=00010000d8b324c3df16b631120077e9d27f35b7d564ebc529087b9dcbc2f7556d9126fe81efd33c2d046cfd; pgv_si=s9506151424; pgv_info=pgvReferrer=&ssid=s6703251255; ptisp=ctc; ptui_loginuin=675365043; uin=; skey=@5ZzsPWzRc; verifysession=h01a106acab1cddfbb02999f5bd471c902ebe5ab556be3b40de657fe21ffea2f01c24e692c37c2bd63c; IED_LOG_INFO=uin*675365043|nick*%u7B11%u7740%u770B%u4F60%u54ED%20|time*1461910804; zzpaneluin=; zzpanelkey=; p_skey=bAQZCU78gH4Qy0BSWeZ5pOsOdoKEnmVDRCdEi2HTIUY_; pt4_token=MNU3KRdqZCn9wQhASxnjt2lE*Ikt29Yf-6r8jHUPFMw_; p_uin=; qzone_check=56707892_1461913345; rv2=802C9F7A654B37CD767C9691A7A5A7BF7F09CAB51D6341AA0B; property20=41424F4482BCD05C0A25B282DF8B360B38C86FEB7860B26C51C256022F9C1879FF87187E60572F65; qqmusic_uin=; qqmusic_key=@5ZzsPWzRc; qqmusic_fromtag=6; __Q_w_s_hat_seed=1');
//                    $url2="http://base.s21.qzone.qq.com/cgi-bin/user/cgi_userinfo_get_all?uin=". $v2['uin']."&vuin=56707892&fupdate=1&rd=0.8304920770656681&g_tk=1551039607";
                    $url2="http://base.s11.qzone.qq.com/cgi-bin/user/cgi_userinfo_get_all?uin=". $v2['uin']."&vuin=56707892&fupdate=1&rd=0.3045121533378856&g_tk=1845089435";
                    $res2 = $client->get($url2);
                    $res2 = substr($res2, 10);
                    $res2 = substr($res2, 0, -2);
                    $res2 = json_decode($res2, true);
                    $arr[$v2['name']]['qq'] = $v2['uin'];
                    $arr[$v2['name']]['num'] = 1;
                    $arr[$v2['name']]['sex'] = $res2['data']['sex'];
                    $arr[$v2['name']]['age'] = $res2['data']['age'];
                    $arr[$v2['name']]['birthday'] = $res2['data']['birthday'];
                }
            }
        }
    }
    sleep('1');
}

if(empty($arr)) die;
$ages = array();
foreach ($arr as $k=>$v) {
    $ages[] = $v['num'];
}
$num=$num2=$num3=0;
array_multisort($ages, SORT_DESC, $arr);
foreach($arr as $k3=>$v3){
    echo "昵称:",$k3,'账号:',$v3['qq'],'访问次数:',$v3['num'],'性别',$v3['sex'],'年龄',$v3['age'],'生日',$v3['birthday'],"\n";
    $v3['sex']==2? $num++:$num2++;
    $num3 = $v3['num']>$num3?$v3['num']:$num3;
//    echo $v3,"\n";
}
echo  "共有妹子:$num 人,其他:$num2 人,最高访问次数:$num3";


这是我之前写过的一个抓取qq好友空间所有点过赞,评过论的用户,也就是他的QQ好友 :)

并且进行数据的整理和分析,找出

//共有妹子:$num 人,其他:$num2 人,最高访问次数:$num3
一些好玩的数据

这个脚本是半自动的需要手动的写入cookie保持登陆的状态。

想写一个全自动的来着,实在是搞不懂tx的加密规则就放弃了(破涕为笑)


总结:至此恭喜会抓取数据了,但是人的创造力是无限的。





版权声明:本文为博主原创文章,未经博主允许不得转载。

php爬虫教程(一) 简单的页面抓取

最近朋友抓取点数据,写了几个抓取数据的脚本。 主要功能是,分别抓起x了么,美x,x度外卖的餐厅和菜品数据 ,后期我把代码分享出来。 今天就先说说简单的页面抓取 -------------------...

PHP爬虫最全总结1

爬虫是我一直以来跃跃欲试的技术,现在的爬虫框架很多,比较流行的是基于python,nodejs,java,C#,PHP的的框架,其中又以基于python的爬虫流行最为广泛,还有的已经是一套傻瓜式的软件...

网页抓取:PHP实现网页爬虫方式小结

抓取某一个网页中的内容,需要对DOM树进行解析,找到指定节点后,再抓取我们需要的内容,过程有点繁琐。LZ总结了几种常用的、易于实现的网页抓取方式,如果熟悉JQuery选择器,这几种框架会相当简单。 ...

用php爬取网页数据

首先你得知道抓取网页数据的原理,其实你只需要一句话就能把别人的网页全拿过来 file_get_contents("http://www.baidu.com");//注意url一定要完整 但是怎样从...
  • vspeter
  • vspeter
  • 2013年03月08日 23:51
  • 3047

php实战之使用curl抓取网站数据

之前做过一个网站数据抓取的工作,让我充分感受到了计算机科学的生产力。之前为了抓取网站源数据的数据,我们公司只能依靠人多力量大的方式,一点一点从源网站抠,整整干了三天,干得头昏脑涨,听老板说以前有php...

PHP抓取百度百科数据实践

最近在用PHP抓取各种IP数据,这里讲一下在抓取百度百科数据时的步骤以及遇到的坑。...

php爬虫:知乎用户数据爬取和分析

转载自:http://segmentfault.com/a/1190000004357994 背景说明:小拽利用php的curl写的爬虫,实验性的爬取了知乎5w用户的基本信息;同时,针对爬取...

php爬虫抓取信息及反爬虫相关

php爬虫首推Curl函数了,先来认识下它。 0x01.curl扩展的安装: 1.确保php子文件夹ext里面有php_curl.dll(一般都有的,一般配置时候会设置环境变量的) 2.将php...

php-扒数据

一、准备1.弄清自己需要的数据2.分析数据的规律3.分析保存数据的方式(文本文件或数据库)二、模拟http请求,获得源码这里模拟http请求我用的是curl模拟的,具体实现代码:/** * Curl...

PHP使用3种方法实现数据采集

什么叫采集? 就是使用PHP程序,把其他网站中的信息抓取到我们自己的数据库中、网站中。   PHP制作采集的技术: 从底层的socket到高层的文件操作函数,一共有3种方法可以实现采集。 1. 使用s...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:php爬虫教程(四)抓取数据并进行处理
举报原因:
原因补充:

(最多只允许输入30个字)