php 采集qq空间,php批量抓取QQ空间相册链接
在网上找了很久也没有找到一个有效的备份QQ空间照片工具,作为一个Phper,淦就完事了,所以顶着寒冷,搞了三个小时终于把QQ空间所有照片备份了。
采用QQ空间api,有效时间不确定,如果发现api生效,请自己抓取api。
手动验证了一下相册数与抓到的链接数,一个都不差,/宾果<?php
class QzoneImgDown
{
// 调用方法
// 请登录https://h5.qzone.qq.com/获取你的cookie以及g_tk和uin
// $g_tk = '';
// $res_uin = ''; // 该uin为你的QQ号(常规情况下)
// $cookie = '';
// $qzone = new QzoneImgDown($g_tk, $uin, $cookie);
// echo $qzone->getList();
// Ps:该类库仅用于获取自己QQ空间照片链接,至于QQ好友相册没有适配
// 获取的下载链接请使用下载工具进行下载(php不方便下载)
public function __construct($g_tk, $res_uin, $cookie)
{
$this->g_tk = $g_tk;
$this->res_uin = $res_uin;
// 相册列表接口
$this->listApi = 'https://mobile.qzone.qq.com/list?g_tk=' . $this->g_tk . '&format=json&list_type=album&action=0&res_uin=' . $this->res_uin . '&count=99';
// 相册图片列表接口
$this->imgApi = 'https://h5.qzone.qq.com/webapp/json/mqzone_photo/getPhotoList2?g_tk=' . $this->g_tk . '&uin=' . $this->res_uin . '&albumid=xxxxxxxxxxxxx&ps=0&pn=20&password=&password_cleartext=0&swidth=1080&sheight=1920';
$this->cookie = $cookie;
}
/**
* 获取图片列表
* @Author Youngxj
* @DateTime 2019-12-01
* @param [type] $url 相册ajax数据
* @return [type] [description]
*/
private function getImg($url)
{
// echo $url;exit;
$json = $this->curl_request($url, '', '', $this->cookie);
$arr = json_decode($json, 1);
if (isset($arr['data']['album']['name'])) {
$fileName = $arr['data']['album']['name'];
$myfile = @fopen($fileName . '.txt', 'a+');
if(!$myfile){
exit('文件写入失败,请检查目录读写权限是否正常');
}
$photos = array_values($arr['data']['photos']);
// echo json_encode($arr['data']['photos']);exit;
foreach ($photos as $key => $value) {
foreach ($photos[$key] as $keys => $values) {
// var_dump($key);var_dump($keys);
// var_dump($photos[$key][$keys]['1']['url']);
echo $text = $photos[$key][$keys]['1']['url'] . "n";
fwrite($myfile, $text);
}
}
fclose($myfile);
}
}
/**
* 计算翻页
* @Author Youngxj
* @DateTime 2019-12-01
* @param [type] $url [description]
* @return [type] [description]
*/
private function ret($url)
{
$json = $this->curl_request($url, '', '', $this->cookie);
$arr = json_decode($json, 1);
// echo json_encode($arr);exit;
if (isset($arr['data']['album']['name'])) {
$total_count = $arr['data']['total_count'];
$page_count = ceil($total_count / 20);
// var_dump($total_count);exit;
for ($i = 0; $i <= $page_count; $i++) {
// var_dump($i);
$url = $this->url_set_value($url, 'ps', $i * 20);
// var_dump($url);exit;
$this->getImg($url);
}
// var_dump($page_count);exit;
// exit;
} else {
exit('error');
}
}
/**
* 获取相册列表
* @Author Youngxj
* @DateTime 2019-12-01
* @return [type] [description]
*/
public function getList()
{
$json = $this->curl_request($this->listApi, '', '', $this->cookie);
$arr = json_decode($json, 1);
if (isset($arr['data']['vFeeds'])) {
$newArr = $arr['data']['vFeeds'];
foreach ($newArr as $key => $value) {
$albumid = $newArr[$key]['pic']['albumid'];
$url = $this->url_set_value($this->imgApi, 'albumid', $albumid);
// echo $url."n";
echo $this->ret($url);
}
} else {
exit('error');
}
}
/**
* curl模拟提交
* @param [type] $url 访问的URL
* @param string $post post数据(不填则为GET)
* @param string $referer 自定义来路
* @param string $cookie 提交的$cookies
* @param integer $returnCookie 是否返回$cookies
* @param string $ua 自定义UA
* @return [type] [description]
*/
private function curl_request($url, $post = '', $referer = '', $cookie = '', $returnCookie = 0, $ua = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0')
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_USERAGENT, $ua);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
curl_setopt($curl, CURLOPT_REFERER, $referer);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$httpheader[] = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
$httpheader[] = "Accept-Encoding:gzip, deflate";
$httpheader[] = "Accept-Language:zh-CN,zh;q=0.9";
$httpheader[] = "Connection:close";
curl_setopt($curl, CURLOPT_HTTPHEADER, $httpheader);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
if ($post) {
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));
}
if ($cookie) {
curl_setopt($curl, CURLOPT_COOKIE, $cookie);
}
curl_setopt($curl, CURLOPT_HEADER, $returnCookie);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_ENCODING, "gzip");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
if (curl_errno($curl)) {
return curl_error($curl);
}
curl_close($curl);
if ($returnCookie) {
list($header, $body) = explode("rnrn", $data, 2);
preg_match_all("/Set-Cookie:([^;]*);/", $header, $matches);
$info['cookie'] = substr($matches[1][1], 1);
$info['content'] = $body;
return $info;
} else {
return $data;
}
}
/**
* 替换get参数
* @Author Youngxj
* @DateTime 2019-12-01
* @param [type] $url 地址
* @param [type] $key key
* @param [type] $value val
* @return [type] [description]
*/
private function url_set_value($url, $key, $value)
{
$a = explode('?', $url);
$url_f = $a[0];
$query = $a[1];
parse_str($query, $arr);
$arr[$key] = $value;
return $url_f . '?' . http_build_query($arr);
}
}
如何获取Cookie及uin就不再赘述了 该类库仅用于获取自己QQ空间照片链接,至于QQ好友相册没有适配 获取的下载链接请使用下载工具进行下载(php不方便下载)
php 采集qq空间,php批量抓取QQ空间相册链接相关推荐
- qpython爬虫_python爬虫教程:批量抓取 QQ 群信息
前言 本文讲解Python批量抓取 QQ 群信息,包括群名称.群号.群人数.群主.地域.分类.标签.群简介等内容,返回 XLS / CSV / JSON 结果文件. 基本环境配置 版本:Python2 ...
- php爬取qq好友,使用php批量抓取QQ空间相册链接
前言 小杰之前发布的文章<为什么QQ空间与我们渐行渐远?> 里面就提到小杰会抽空备份QQ空间的照片,但是在网上找了很久也没有找到一个有效的工具 作为一个Phper,淦就完事了,所以顶着寒冷 ...
- python3批量抓取电影天堂下载链接
1.思路分析 首先打开电影天堂的列表页 右键审查元素查看电影简介的链接 将此链接打开可以得到下载地址 可能是爬虫原因网站审查元素和用request得到的数据不一样,因此代码的正则表达式会改变 加上列表 ...
- 批量抓取图虫作者页作品图片的方法
图虫相册中很多图片都精美绝伦,让人抑制不住想要"据为己有".今天小编给大家分享一款采集工具--下图高手,下面就一采集图虫作者页图片为例,一起来操作. 作品分类效果: 图片展示效果: ...
- php 采集qq空间,php使用curl抓取qq空间的访客信息示例_php技巧
这篇文章主要介绍了php使用curl抓取qq空间的访客信息示例,需要的朋友可以参考下 config.php<?php define('APP_DIR', dirname(__FILE__)); ...
- Python爬虫编程思想(103):项目实战--抓取QQ空间说说的内容
本例使用Selenium完成一个综合项目,该项目可以QQ空间说说的内容.首先需要分析一下QQ空间说说的HTML代码. 由于进入QQ空间需要登录,所以抓取QQ空间说说的内容需要如下2步: 模拟登录 抓取 ...
- php curl 批量,关于用php的curl批量抓取内容
先上个单个采集的curl访问案例<?php $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'www.baidu.com'); curl ...
- 京东上货助手批量抓取淘宝商品步骤
京东上传商品的不是很复杂,不过如果想要批量抓取其他平台商品到京东,京东商家就需要时间和精力来批量抓取商品上传了.一般在京东开店的商家,在淘宝.阿里等平台都会有店铺的,这个是电商商家的常态,很多商家都会 ...
- 京东上货助手怎么批量抓取淘宝商品?
京东开店的商家,是如何把其他平台的商品一键复制到京东的呢?京东是个什么样的平台呢?相信很多商家都知道吧,京东有自己的物流,是中国的综合网络零售商,是中国电子商务领域受消费者欢迎和具有影响力的电子商务网 ...
- python批量读取图片并批量保存_Python爬虫:批量抓取花瓣网高清美图并保存
原标题:Python爬虫:批量抓取花瓣网高清美图并保存 昨天看到了不错的图片分享网--花瓣,里面的图片质量还不错,所以利用selenium+xpath我把它的妹子的栏目下爬取了下来,以图片栏目名称给文 ...
最新文章
- qrcode生产带logo_“白板”口罩打上LOGO装名牌 警方重拳出击清市场
- java_jdbc_spring框架查询操作简例
- bzoj 3120 矩阵优化DP
- 数据中心调试的重新思考
- 视图计算背后的技术架构思考
- 2014年9月28日 18:35:01
- 分页和条件查询接口开发
- 洛谷P2884 [USACO07MAR]Monthly Expense S
- Python之路(第二篇):Python基本数据类型字符串(一)
- mysql date max_mysql – 每个ID的SELECT MAX DATE
- php 基类 是什么,PHP Model基类
- 用户体验测试(UX测试)
- 串口通讯 电脑和dsp_高速DSP与PC实现串口通信的方法
- php怎么更换图片背景颜色,照片换底色红色变白色怎么变 怎么换照片底色
- 医院时钟系统(卫星校时钟)设计与答疑
- 汤姆猫代码python_用树莓派实现会说话的汤姆猫
- python pip安装pymssql_pip安装pymssql模块时报错“PEP 517”怎样处理
- Java开发面试(持续更新)
- 华为OD机试真题 Python 实现【数字涂色】
- kubernetes dev client-go 进入pod执行命令
热门文章
- 【北亚数据恢复】MSSQL 2000 出现“823”报错信息的数据恢复案例
- 解决File “D:\ProgramData\Anaconda3\lib\site-packages\keras\engine\saving.py“,相关问题
- 活动回顾 | 大咖云集“开源安全治理模型和工具”线上研讨会
- 第七十一章 SQL函数 LAST_DAY
- 世界上所有值得收藏的书单(持续更新)
- 乐森 扫地机器人_扫地机器人到底好用不好用?
- 科技护肤品,买还是不买
- 【Transformers】第 8 章 :使Transformers高效生产
- pro android python with sl4a,Pro Android Python with SL4A
- 怎么用python将日期转化为数字_python转化excel数字日期为标准日期操作