QueryList查找js变量

2020-12-03 16:22:35

下面的方法不错,但是我不知道我哪里出现了问题,没能成功。

所以还是php正则匹配js变量,还是暴力的使用切割字符串的方式,切割两次就出来了。

参考地址  QueryList采集javascript中的内容/采集json字符串/采集AJAX加载的内容


采集网址:http://ql.44i.cc/explore

采集目标:如图


代码

require 'QL/QueryList.class.php';$url = "http://ql.44i.cc/explore/";//定义个处理方法用于QL回调function fun($content,$key){//在这里可以对采集回来的结果做一些额外的处理//用正则匹配出我们想要的内容if(preg_match('/G_SITE_NAME = \'(.+)\'/', $content,$arr)){return $arr[1];}return $content;}$reg = array("xx"=>array("script:eq(0)","html","","fun"));$data = QueryList::Query($url,$reg)->jsonArr;print_r($data);

采集结果


例二»

采集网址:http://pad.zol.com.cn/slide/470/4707265_1.html

采集目标:采集ZOL网站数码图集,是一个json字符串,我们需要把它从js里面采集出来并解析成PHP对象,如图.


代码

require 'QL/QueryList.class.php';$url = "http://pad.zol.com.cn/slide/470/4707265_1.html";//定义个处理方法用于QL回调function fun($content,$key){//在这里可以对采集回来的结果做一些额外的处理//匹配除json字符串if(preg_match('/({.+});/', $content,$arr)){$jsonStr =  $arr[1];//解码json字符串$json = json_decode($jsonStr);return $json;}return $content;}$reg = array("xx"=>array("script:eq(4)","html","","fun"));$data = QueryList::Query($url,$reg)->jsonArr;print_r($data);

采集结果


例三»

采集AJAX动态加载的内容,这种是最简单的了,完全不需要用到QueryList。

采集网址:http://m.mtime.cn/#!/theater/584/3868/date/

采集目标:采集Mtime时光网影视信息,查看源代码会发现源码里并没有我们想要采集的内容,很明显这种内容是通过AJAX动态加载的,在浏览器中按F12调出开发者工具,很容易就可以抓到AJAX地址,如图


地址为http://m.mtime.cn/Service/callback.mi?Ajax_CallBack=true&Ajax_CallBackType=Mtime.Mobile.Pages.CallbackService&Ajax_CallBackMethod=RemoteCallbackSameDomain&Ajax_RequestUrl=http%3A%2F%2Fm.mtime.cn%2F%23!%2Ftheater%2F584%2F3868%2Fdate%2F&t=201492815183877392&Ajax_CallBackArgument0=%2FShowtime%2FMovieTimesByCinema.api%3FcinemaId%3D3868%26date%3D20140928&Ajax_CallBackArgument1=

代码

$url = "http://m.mtime.cn/Service/callback.mi?Ajax_CallBack=true&Ajax_CallBackType=Mtime.Mobile.Pages.CallbackService&Ajax_CallBackMethod=RemoteCallbackSameDomain&Ajax_RequestUrl=http%3A%2F%2Fm.mtime.cn%2F%23!%2Ftheater%2F584%2F3868%2Fdate%2F&t=201492815183877392&Ajax_CallBackArgument0=%2FShowtime%2FMovieTimesByCinema.api%3FcinemaId%3D3868%26date%3D20140928&Ajax_CallBackArgument1=";$jsonStr = file_get_contents($url);$json = json_decode($jsonStr);print_r($json);

采集结果



  • 2019-08-16 13:18:48

    使用ffmpeg进行ts切片并AES-128加密

    由于解密的key文件都是公开的,所以并不能算上完全加密,用户只要把你的key+m3u8里的ts切片文件全部下载,用ffmpeg还是能解,这时就要考虑url的key防止用户直接下载和盗链。 ​

  • 2019-08-18 22:22:54

    Error:error: unable to remove file: Permission denied

    JNI里写的C++增加了函数或修改了,如果此时是Debug模式下,而且还没退出程序,就出现这个Permission denied的提示。解决也很简单:就是退出App即可。如果退出无响应,直接拔usb,重新插上也可以

  • 2019-08-19 10:24:29

    浅析Express中的路由与应用模式

    Express是一个基于Node.js的轻量级web开发框架,具有体积小,使用灵活等特点。查看Express的源码,如果不计供使用的中间件,主体框架只有一千余行代码,非常简练。

  • 2019-08-19 15:50:17

    记录PHP的进程和线程理解

    线程是进程的一个执行流,线程不能分配系统资源,它是进程的一部分,比进程更小的独立运行的单位。 解释一下:进程有两个特性:一是资源的所有权,一个是调度执行(指令集),线程是调度执行中的一部分,是指进程执行过程的路径,也叫程序执行流。线程有时候也叫轻量级进程。

  • 2019-08-20 08:51:52

    一台Linux服务器可以负载多少个连接?

    我们在压测一台目标服务器,想看下负载的连接数,当我们压到一定数量的时候,控制台突然报"too many open files",这是因为linux系统创建一个TCP连接的时候,都会创建一个socket句柄,每个socket句柄就是一个文件句柄。

  • 2019-08-20 08:56:42

    Linux下Http高并发参数优化之TCP参数

    Linux 内核参数考虑的是最通用场景,并不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数。其次,对 Nginx 的一些参数,也需要根据服务情况进行调整。

  • 2019-08-20 11:05:30

    php,nginx,线程和进程分析

    大多数的 Linux 程序都倾向于使用进程而不是线程,因为 Linux 下相对来说创建进程的开销比较小,而 Linux 的线程功能又不是很强大。

  • 2019-08-20 11:22:36

    Node.js 单线程与多进程比较

    进过上面两种方式的对比,结果很明显,多进程处理速度是单线程处理速度的 4 倍多。而且有条件的情况下,如果电脑 CPU 足够,进程数更多,那么速度也会更快。