如何用 php 抓取微信文章正文
2个回答
2017-07-28 · 知道合伙人互联网行家
关注
展开全部
在刚入手PHP的时候,经理让我自己做一个文章的管理系统为了方便管理微信端发的消息。除了简单的添加分类、管理分类、添加文章、管理文章,还有一个功能就是要从微信文章网址中拿到网址上的标题、作者以及发表时间。
一、 页面使用ajax
把微信页面的地址放在文章链接里,点击获取,调用ajax。不说了,直接上代码<td>文章链接:</td>
<td><input type="text" id="url" name="url" size="50"> <input type="button" value="获取" onclick="javascript:return getMsg()"/></td>
复制代码
function getMsg(){
var title=document.getElementById("title");var url=document.getElementById("url").value;var typeId;
var writer=document.getElementById("writer");var addtime=document.getElementById("addtime");//alert(url);die;
$.ajax({
url: '/addarticle/getmsg',
type: 'POST',
dataType:'text',
data: 'url='+url,
success: function(data)
{
var str=data;
var arr=new Array();//0是标题;1是时间;2是作者var result=str.split("<<>>");
for(var i=0;i<result.length;i++){
arr.push(result[i]);
}
title.value=arr[0];
addtime.value=arr[1];
writer.value=arr[2];
//alert(arr[0]);
},
error: function()
{
alert('请求错误');
}
});
}
复制代码
二、在php页面利用file_get_content函数获取页面全部信息该函数是将页面中的所有内容写在字符串中,想要拿到指定的内容,就用到了正则匹配。正则表达式的相关知识就不说了,直接说今天的内容。将结果放在同一个变量中,用特殊符号隔开,以便在视图页面进行分割并写入文本框内。
复制代码
public function actionGetmsg(){
$result=array();
$url=$_POST["url"];
$wx_content=file_get_contents($url);//利用函数获得网址的内容$title_html="/.*?<title>(.*?)<\/title>.*?/";//正则匹配文章的标题preg_match($title_html, $wx_content, $matchs);echo $matchs[1]."<<>>";
//echo '<pre>';var_dump($matchs);echo '</pre>';//正则匹配文章的添加时间
$creattime_html="/.*?<em id=\"post-date\" class=\"rich_media_meta rich_media_meta_text\">(.*?)<\/em>.*?/";preg_match($creattime_html, $wx_content, $matchs);// echo '<pre>';var_dump($matchs);echo '</pre>';echo $matchs[1]."<<>>";
//正则匹配文章的作者
$wxh_html="/.*?<a class=\"rich_media_meta rich_media_meta_link rich_media_meta_nickname\" href=\"##\" id=\"post-user\">(.*?)<\/a>.*?/";preg_match($wxh_html, $wx_content, $matchs);// echo '<pre>';var_dump($matchs);echo '</pre>';echo $matchs[1]."<<>>";
}
复制代码
三、同时大家可以看到图片上时间那一栏,可以自己添加这里使用的是一个小控件,也就是一个js,WdatePicker.js。
首先在页面的头部引入js控件,在文本框中写下以下代码,点击文本框就可以看到日历形式的出现,选择你需要的日期。
<td><input type="text" name="newsTime" id="addtime" onclick="WdatePicker({dateFmt:'yyyy:MM:dd HH:mm:ss'})" placeholder="请输入文章发布时间" /> </td>
具体的WdatePicker.js可以在网上找一个。
一、 页面使用ajax
把微信页面的地址放在文章链接里,点击获取,调用ajax。不说了,直接上代码<td>文章链接:</td>
<td><input type="text" id="url" name="url" size="50"> <input type="button" value="获取" onclick="javascript:return getMsg()"/></td>
复制代码
function getMsg(){
var title=document.getElementById("title");var url=document.getElementById("url").value;var typeId;
var writer=document.getElementById("writer");var addtime=document.getElementById("addtime");//alert(url);die;
$.ajax({
url: '/addarticle/getmsg',
type: 'POST',
dataType:'text',
data: 'url='+url,
success: function(data)
{
var str=data;
var arr=new Array();//0是标题;1是时间;2是作者var result=str.split("<<>>");
for(var i=0;i<result.length;i++){
arr.push(result[i]);
}
title.value=arr[0];
addtime.value=arr[1];
writer.value=arr[2];
//alert(arr[0]);
},
error: function()
{
alert('请求错误');
}
});
}
复制代码
二、在php页面利用file_get_content函数获取页面全部信息该函数是将页面中的所有内容写在字符串中,想要拿到指定的内容,就用到了正则匹配。正则表达式的相关知识就不说了,直接说今天的内容。将结果放在同一个变量中,用特殊符号隔开,以便在视图页面进行分割并写入文本框内。
复制代码
public function actionGetmsg(){
$result=array();
$url=$_POST["url"];
$wx_content=file_get_contents($url);//利用函数获得网址的内容$title_html="/.*?<title>(.*?)<\/title>.*?/";//正则匹配文章的标题preg_match($title_html, $wx_content, $matchs);echo $matchs[1]."<<>>";
//echo '<pre>';var_dump($matchs);echo '</pre>';//正则匹配文章的添加时间
$creattime_html="/.*?<em id=\"post-date\" class=\"rich_media_meta rich_media_meta_text\">(.*?)<\/em>.*?/";preg_match($creattime_html, $wx_content, $matchs);// echo '<pre>';var_dump($matchs);echo '</pre>';echo $matchs[1]."<<>>";
//正则匹配文章的作者
$wxh_html="/.*?<a class=\"rich_media_meta rich_media_meta_link rich_media_meta_nickname\" href=\"##\" id=\"post-user\">(.*?)<\/a>.*?/";preg_match($wxh_html, $wx_content, $matchs);// echo '<pre>';var_dump($matchs);echo '</pre>';echo $matchs[1]."<<>>";
}
复制代码
三、同时大家可以看到图片上时间那一栏,可以自己添加这里使用的是一个小控件,也就是一个js,WdatePicker.js。
首先在页面的头部引入js控件,在文本框中写下以下代码,点击文本框就可以看到日历形式的出现,选择你需要的日期。
<td><input type="text" name="newsTime" id="addtime" onclick="WdatePicker({dateFmt:'yyyy:MM:dd HH:mm:ss'})" placeholder="请输入文章发布时间" /> </td>
具体的WdatePicker.js可以在网上找一个。
展开全部
@FatHareMe说得是正确的,用curl抓取就可以了。
昨天回答了一个相关的问题也是抓取的,你可以参考一下。
http://zhidao.baidu.com/question/1640514695183657580
昨天回答了一个相关的问题也是抓取的,你可以参考一下。
http://zhidao.baidu.com/question/1640514695183657580
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |