注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

面包会有的

php asp 高端网站开发 微信网站开发 视频会议软硬件

 
 
 

日志

 
 

采集jquery改写html的页面  

2016-12-24 12:38:16|  分类: querylist |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
有些网页,查看源代码时,看到的是很简单的内容,与页面正常显示的效果不一样。

遇到一个采集天气预报的功能,找到的天气预报页,查看源代码时,看不到图片地址及天气信息,只有些最基本的div和class

所以自己写了几行代码,测试类似jquery改写dom的页面是否能正常采集。

html页面
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="jquery-1.10.1.min.js"></script>
</head>
<body class="right-main-body">
    <div class="title">标题</div>
    <div class="content">内容</div>
</body>
</html>

<script language="javascript">
$(document).ready(function() {
//
$('.title').html("人社部放话啦!2017年,养老金还要涨");

$('.content').html("老有所养,是重大民生工程。养老保险制度改革将给人们生活带来哪些变化?对经济发展又会产生什么影响?老龄化程度加深,养老保险能否兜得住?");

});
</script>

采集页:
<?php
set_time_limit(0);
header('Content-type:text/html; charset=utf-8');//UTF-8
//header("Cache-Control: no-cache"); 
// 设置此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可。 
header ( " Expires: Mon, 26 Jul 1970 05:00:00 GMT " );
// 设置此页面的最后更新日期(用格林威治时间表示)为当天,可以强制浏览器获取最新资料
header ( " Last-Modified:" . gmdate ( " D, d M Y H:i:s " ). "GMT " );
// 告诉客户端浏览器不使用缓存,HTTP 1.1 协议
header ( " Cache-Control: no-cache, must-revalidate " );
// 告诉客户端浏览器不使用缓存,兼容HTTP 1.0 协议
header ( " Pragma: no-cache " );


require 'Gather/QueryList/vendor/autoload.php';
use QL\QueryList;



//需要采集的目标页面
$page = 'http://www.test.com/caiji/content.html?rnd='.rand();
echo $page;
//采集规则
$reg = array(
    //采集文章标题
    'title' => array('.title','text'),

    'content' => array('.content','text','a -.content_copyright -script',function($content){
            $doc = phpQuery::newDocumentHTML($content);

            return $doc->htmlOuter();
    })
    );

$ql = QueryList::Query($page,$reg);
$data = $ql->getData();

//打印结果
print_r($data);

测试结果:只能采集到未被js修改的内容,js动态生成的不能获取。


后来找到一个办法:
<?php
$send_url='http://www.test.com/caiji/content.html';
$ch = curl_init($send_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
$contents = curl_exec($ch);
curl_close($ch);

print_r($contents);
?>

或者:
$html = file_get_contents('http://www.test.com/caiji/content.html');
echo $html;
也可以获取到正确的html代码
  评论这张
 
阅读(21)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017