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-05-21 12:37:34

    RecyclerView 刷新闪烁

    闪烁是 notifyDataSetChange 造成的。由于适配器不知道整个数据集中的哪些内容已经存在,在重新匹配 ViewHolder 时发生的。 当然,遇到这个问题时有去搜索一些答案,看到的很多都是去禁止 RecycleView 的默认动画,可惜这对我没什么用。下面的方法是对我有用的。

  • 2019-05-21 12:43:26

    (重要)RecycleView的缓存机制

    RecycleView的四级缓存是由三个类共同作用完成的,Recycler、RecycledViewPool和ViewCacheExtension。Recycler用于管理已经废弃或者与RecyclerView分离的ViewHolder,这里面有两个重要的成员,为可以看见的屏幕的内部缓存成员mAttachedScrap、mChangedScrap和滑出屏幕外的外部缓存成员mCachedViews二者共同完成ViewHolder的缓存;RecycledViewPool类是用来缓存整体所有的ViewHolder,是对mCachedViews缓存的补充;ViewCacheExtension是扩展内的缓存对象,默认不加载,需实现方法getViewForPositionAndType(Recycler recycler, int position, int type)来实现自己的缓存。接下来对四级缓存一步步介绍。

  • 2019-05-21 12:44:31

    对嵌套RecyclerView的优化

    RecyclerView 是一个更高级的 ListView ,它可以重用view避免额外创建太多的view从而带来流畅的滚动性能。RecyclerView通过叫做 View pool 的东西持有不再可见的 view ,让它可被回收

  • 2019-05-25 14:54:50

    commit your changes or stash them before you can merge

    Your local changes to the following files would be overwritten by merge:         protected/config/main.php Please, commit your changes or stash them before you can merge. --------------------- 作者:陈小峰_iefreer 来源:CSDN 原文:https://blog.csdn.net/iefreer/article/details/7679631 版权声明:本文为博主原创文章,转载请附上博文链接!

  • 2019-05-27 10:43:34

    IntelliJ IDEA中C盘文件过大怎么办

    当我在D:\ 安装完IDEA9.0之后,建立了一个工程,发现C:\Users\Administrator\.IntelliJIdea90 竟然增大到了500+M,并且随着使用在逐渐增大,这样占用系统盘资源是非常让人不爽的,那么如何将其修改到其他路径呢?

  • 2019-05-28 13:33:20

    BRVAH+MTRVA,复杂?不存在的

    言归正传,这样的一个首页,我们需要做怎么样的基础工作呢?或者说,碰到以后更复杂的页面我们应该怎么做?这里小提示下,不要再用什么类似ScrollView的这种东西了,诶,好像说的有点绝对,尽量不要用,这不是谷歌想要看到的,5.0谷歌推出了RecyclerView,从它的整个设计架构来看,简直就是为这而生的。而RecyclerView的视图是通过Adapter来渲染的。原始的Adapter,让人很蛋疼,重复工作太多,我们应该要有封装的思想,把最需要的部分提供出来,其它不用管。