最近比较闲,所以就打算做些小东西。。。就当练练手,这次做的是一个微信的图库小程序,后台接口用的是TP5框架。。主要思路是后台抓取并返回某个网站所有图片的链接以及其他内容,微信端接收后台返回的json数据,请求之后展示图片

完整项目地址

https://gitee.com/gdhsxuan/personal_tk

【微信小程序】图库——(小程序篇)

小程序二维码:

完成效果

抓取的图片网址是

http://www.jdlingyu.mobi/

打开之后随便点一个类别。。。(我这里点的是cos。。其他的都一样。。手动滑稽。。)

F12选中缩略图的部分。。分析下网页结构。。

找到了缩略图的url,图集的url和文字。。

然后看下分页的部分。。。点击下一页。。打开控制台的network选项

发现了需要提交的参数,后来经过多次尝试后发现这个网址可以直接使用get方式提交。。xxx/?paged=xxx

接下来写段代码试试

        header("Content-type: text/html; charset=utf-8");$paged=1;$ch1 = curl_init();$url = "http://www.jdlingyu.mobi/collection/cos";$data1="paged={$paged}";curl_setopt($ch1, CURLOPT_URL,$url);curl_setopt($ch1, CURLOPT_POST, 1); curl_setopt($ch1, CURLOPT_POSTFIELDS, $data1);curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch1, CURLOPT_HEADER, 0); curl_setopt($ch1, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5');$result=curl_exec($ch1); curl_close($ch1);print_r($result);die;

加上正则

header("Content-type: text/html; charset=utf-8");$paged=1;$ch1 = curl_init();$url = "http://www.jdlingyu.mobi/collection/cos";$data1="paged={$paged}";curl_setopt($ch1, CURLOPT_URL,$url);curl_setopt($ch1, CURLOPT_POST, 1); curl_setopt($ch1, CURLOPT_POSTFIELDS, $data1);curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch1, CURLOPT_HEADER, 0); curl_setopt($ch1, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5');$result=curl_exec($ch1); curl_close($ch1);$pat1='/<div style="background-image:url(.*?)" class="preview thumb-in"><\/div>/';$pat3='/<h2 class="entry-title"><a target="_blank" href="(.*?)" rel="bookmark">(.*?)<\/a><\/h2>/';preg_match_all($pat1, $result, $m);preg_match_all($pat3, $result, $z);print_r($m);print_r($z);die;

接下来是抓每个图集的内容了。。。

分析的方法都差不多。。。就是注意下要过滤掉一些不相关的图片的内容

最后贴上完整的代码。。(有些代码懒得删了。。。)

<?php
namespace app\index\controller;
use think\Controller;
use think\Request;
class Index extends Controller
{public function index(){header("Content-type: text/html; charset=utf-8");$arr=array();$all_arr=array();$paged=Request::instance()->param('page');//$paged=1;$ch1 = curl_init();$url = "http://www.jdlingyu.mobi/collection/cos";$data1="paged={$paged}";curl_setopt($ch1, CURLOPT_URL,$url);curl_setopt($ch1, CURLOPT_POST, 1); curl_setopt($ch1, CURLOPT_POSTFIELDS, $data1);curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch1, CURLOPT_HEADER, 0); curl_setopt($ch1, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5');$result=curl_exec($ch1); curl_close($ch1);$pat1='/<div style="background-image:url(.*?)" class="preview thumb-in"><\/div>/';$pat3='/<h2 class="entry-title"><a target="_blank" href="(.*?)" rel="bookmark">(.*?)<\/a><\/h2>/';preg_match_all($pat1, $result, $m);preg_match_all($pat3, $result, $z);//print_r($m);print_r($z);die;foreach ($m[1] as $key => $v) {$v=str_replace("('",'', $v);$v=str_replace("')",'', $v);array_push($arr,$v);}$all_arr['thumb']=$arr;$all_arr['link']=$z[1];$all_arr['text']=$z[2];//array_push($all_arr,$arr,$z[1],$z[2]);$more=array();// $thumb_arr=array_chunk($all_arr['thumb'],2);// $link_arr=array_chunk($all_arr['link'],2);// $text_arr=array_chunk($all_arr['text'],2);for ($i=0; $i <count($all_arr['link']) ; $i++) { array_push($more,$all_arr['thumb'][$i],$all_arr['link'][$i],$all_arr['text'][$i]);}$s=array_chunk($more,3);$res=array_chunk($s,2);return json(['res'=>$res]);// $this->assign('all',$all_arr);// return $this->fetch();}public function detail(){header("Content-type: text/html; charset=utf-8");$link=Request::instance()->param('link');$arr=array();  //用来存储出现次数最多$all_arr=array();$str="";//$paged="1";$ch1 = curl_init();$url = $link;//$data1="paged={$paged}";curl_setopt($ch1, CURLOPT_URL,$url);// curl_setopt($ch1, CURLOPT_POST, 1); // curl_setopt($ch1, CURLOPT_POSTFIELDS, $data1);curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch1, CURLOPT_HEADER, 0); curl_setopt($ch1, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5');$result=curl_exec($ch1); curl_close($ch1);$pat1='/<img.*?src=[\"|\']?(.*?)[\"|\']?\s.*?width=.+?>/i';preg_match_all($pat1, $result, $m);//print_r($m[1]);foreach ($m[1] as $k => $v) {if($v!=="http://wx1.sinaimg.cn/large/d030806aly1ftlwthq2uyj20ci0iqn5m.jpg"){$str.=strlen($v).',';$arr=explode(',',$str);}}$arr=array_count_values($arr); arsort($arr); $arr=array_keys($arr);foreach ($m[1] as $key => $value) {if($value!=="http://wx1.sinaimg.cn/large/d030806aly1ftlwthq2uyj20ci0iqn5m.jpg"){if(strlen($value)==$arr[0]){array_push($all_arr,$value);}}}return json(['res'=>$all_arr]);die;print_r($all_arr);}

【微信小程序】图库——(后台接口篇)相关推荐

  1. 微信小程序链接后台接口,进行数据交互

    微信小程序链接后台接口,进行数据交互 新手学微信小程序,设计页面还可以,有没有让进行数据交互的时候就不知道怎么弄了,下面就记录一下我是怎么进行交互的 1.登陆微信小程序平台,进入首页,点击开发设置 2 ...

  2. 微信小程序请求后台接口(完整版)

    按照我写的Demo阐述下,三种方法都可以,看各自的需求使用吧 方式一: 以点击事件的形式 : // 其他页面内容就不展示了,按照自己的结构去渲染数据 <button type="but ...

  3. 微信小程序菜品做法展示数据库设计_微信小程序结合后台数据管理实现商品数据的动态展示、维护...

    微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,本篇随笔介绍微信小程序结合后台数据管理实现商品数据的动态展示.维护,介绍如何实现商品数据在后台管理系统中的维护管理,并通 ...

  4. 微信小程序与后台PHP交互

    在去年的时候,参加过学校的一个创业活动,在团队决定做一个关于图书的微信小程序以后,我负责做微信小程序的后台程序,因为初次接触,决定选用较为简单的PHP作为后台语言,实现了微信小程序的一些基本功能,例如 ...

  5. 微信小程序之获取接口数据展示

    上篇说到获取编辑框文本,没看过去看看. 本片介绍简单的接口数据获取,并且展示,采取模拟数据,拉取数据方式方法.文章最后附上DEMO 本篇暂未考虑美化问题,只看功能.如图: 一.简单介绍 1> w ...

  6. 微信小程序调用支付接口支付(tp5、小程序)

    微信小程序调用支付接口支付 今天记录一下学习的小程序调用微信支付接口 一.先理清一下调起微信支付的整个流程. 1.就是先调用微信的支付统一下单api获取到prepay_id 2.然后后端再将这个pre ...

  7. 微信小程序开发笔记 进阶篇⑤——getPhoneNumber 获取用户手机号码(基础库 2.21.2 之前)

    文章目录 一.前言 二.前端代码wxml 三.前端代码js 四.后端java 五.程序流程 六.参考 一.前言 微信小程序开发笔记--导读 大部分微信小程序开发者都会有这样的需求:获取小程序用户的手机 ...

  8. 微信小程序商城 (后台JAVA)

    微信小程序商城(Java版) 技术选型 1 后端使用技术 1.1 springframework4.3.7.RELEASE 1.2 mybatis3.4.1 1.3 shiro1.3.2 1.4 se ...

  9. 微信小程序+java后台实现openid获取

    写了好一阵子终于把微信小程序的登陆功能实现了,之前就因为返回openid耽误了好一段时间,所以今天就跟大家分享一下java后台的返回openid及解密用户信息. 微信小程序前端: js页面: wx.l ...

最新文章

  1. 用python同时画多个分布图
  2. 苹果iOS 6悄然启用新型精准广告追踪技术
  3. redis将散裂中某个值自增_Redis总结
  4. 机房线路故障,引发多家公司不能上网,和自己de经历有感
  5. MySql 学习笔记-Mysql架构介绍与查询sql执行流程
  6. 剑指offer——数组中重复的数字
  7. Linux下mysql数据恢复
  8. 计算机网络 互联网使用的安全协议
  9. rjs peepcode 笔记
  10. Mac浏览器有好多种,那么哪款好用呢?
  11. 炸弹小分队+蒲公英联机平台联机教程
  12. mysql前台启动linux,mysql 在linux下的启动
  13. 6.1-6.30推荐文章汇总
  14. iOS 12.4 越狱工具 unc0ver 详细教程;Android 手机无痛互传;Apple 更改应用评级
  15. CSS网页布局之传统解决方案与Flex大法
  16. 你见过最赞或最搞笑字幕组翻译有哪些?
  17. ECCV 2018 | 腾讯AI Lab 罗切斯特大学合作提出视频再定位任务
  18. linux 查看服务状态指令
  19. 2021年中国能源产量及消费量情况分析:一次性能源,同比增长2.7%[图]
  20. html分销中心,分销商.html

热门文章

  1. WebApi在MVC 4中一个Controll多个post方法报错处理
  2. 用随机投点法计算pi值matlab,(原创精品)用随机投点法计算π值【Compute π with dartpoint randomly】.doc...
  3. SSH + Lucene + 分页 + 排序 + 高亮 模拟简单新闻网站搜索引擎
  4. es6新特性------学好类(class)这一篇就够了
  5. Lazarus for Raspbian安装
  6. 造作吧!让AirSelfie迷你无人机带你随时随地体验航拍
  7. esp8266----十六进制发送与接收
  8. 博通向芯片交换机中新增软件控制功能
  9. tf.invert_permutation
  10. git push error: RPC failed; HTTP 403 curl 22 The requested URL returned error: 403