PHP轻松获取公众号文章
优采云 发布时间: 2023-05-26 02:22想要获取公众号已发布的文章,不再需要手动翻页查找。使用PHP可以轻松实现自动化获取。本文将为大家详细介绍如何使用PHP获取公众号已发布的文章。
一、准备工作
在开始代码编写之前,我们需要做一些准备工作。首先,需要一个微信公众号的账号和密码。其次,还需要了解微信公众平台接口的相关知识。
二、登录微信公众平台
我们可以使用PHP的CURL库来模拟登录微信公众平台。首先,我们需要发送POST请求到微信登录页面,并带上账号和密码等信息。
代码如下:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'https://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN');
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'username'=>'your_username',
'password'=>'your_password',
'imgcode'=>'',
'f'=>'json',
]));
$result = curl_exec($ch);
curl_close($ch);
$result = json_decode($result, true);
if ($result['base_resp']['ret']!=0){
die('登录失败');
}
$cookie ='';
foreach ($result['redirect_url'] as $item){
if (strpos($item,'token')!== false){
$params = parse_url($item);
parse_str($params['query'],$query);
$cookie = sprintf('wap_sid=%s; wap_sid2=%s;',$query['token'],$query['ticket']);
break;
}
}
if (empty($cookie)){
die('登录失败');
}
这段代码会模拟登录微信公众平台,并返回一个带有token和ticket的cookie。
三、获取文章列表
我们可以使用PHP的SimpleXML库来解析微信公众平台接口返回的XML数据。通过访问以下接口,可以获取文章列表:
https://mp.weixin.qq.com/cgi-bin/appmsg?token=xxxxx&lang=zh_CN&f=json&ajax=1&random=0.1234567890123456&action=list_ex&begin=0&count=10&query=&fakeid=MzUxMTI4NjU5NA==
其中,xxxxx是上一步中获取到的token。fakeid是公众号的唯一标识符,可以在公众号后台中找到。
代码如下:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'https://mp.weixin.qq.com/cgi-bin/appmsg?'.http_build_query([
'token'=>$token,
'lang'=>'zh_CN',
'f'=>'json',
'ajax'=>1,
'random'=> mt_rand()/ mt_getrandmax(),
'action'=>'list_ex',
'begin'=>0,
'count'=> 10,
'query'=>'',
'fakeid'=>$fakeid,
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_COOKIE,$cookie);
$result = curl_exec($ch);
curl_close($ch);
$result = json_decode($result, true);
if ($result['base_resp']['ret']!=0){
die('获取文章列表失败');
}
$articles =$result['app_msg_list'];
foreach ($articles as $article){
echo '<h2>'.$article['title'].'</h2>';
echo '<p>'.$article['digest'].'</p>';
}
这段代码会输出公众号最近10篇文章的标题和摘要。
四、获取文章内容
我们可以使用PHP的DOM库来解析HTML页面,从而获取文章的具体内容。首先,需要访问以下接口,获取文章的URL:
https://mp.weixin.qq.com/cgi-bin/appmsg?token=xxxxx&lang=zh_CN&f=json&ajax=1&random=0.1234567890123456&action=list_ex&begin=0&count=1&query=&fakeid=MzUxMTI4NjU5NA==
其中,xxxxx是上一步中获取到的token。fakeid是公众号的唯一标识符,可以在公众号后台中找到。
代码如下:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'https://mp.weixin.qq.com/cgi-bin/appmsg?'.http_build_query([
'token'=>$token,
'lang'=>'zh_CN',
'f'=>'json',
'ajax'=>1,
'random'=> mt_rand()/ mt_getrandmax(),
'action'=>'list_ex',
'begin'=>0,
'count'=>1,
'query'=>'',
'fakeid'=>$fakeid,
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_COOKIE,$cookie);
$result = curl_exec($ch);
curl_close($ch);
$result = json_decode($result, true);
if ($result['base_resp']['ret']!=0){
die('获取文章URL失败');
}
$url =$result['app_msg_list'][0]['link'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_COOKIE,$cookie);
$html = curl_exec($ch);
curl_close($ch);
$dom = new DOMDocument();
@$dom->loadHTML('<?xml encoding="UTF-8">'.$html);
$content ='';
foreach ($dom->getElementsByTagName('div') as $div){
if ($div->getAttribute('class')=='rich_media_content'){
foreach ($div->childNodes as $childNode){
$content .=$dom->saveHTML($childNode);
}
break;
}
}
echo '<article>'.$content.'</article>';
这段代码会输出公众号最新一篇文章的具体内容。
五、异常处理
在实际使用中,可能会遇到各种异常情况,比如登录失败、获取文章列表失败、获取文章URL失败等。为了保证程序的稳定性,需要对这些异常情况进行处理。
代码如下:
function login(){
//...
}
function getArticles(){
//...
}
function getArticleContent(){
//...
}
try {
$cookie = login();
$articles = getArticles();
foreach ($articles as $article){
echo '<h2>'.$article['title'].'</h2>';
echo '<p>'.$article['digest'].'</p>';
$content = getArticleContent($article['link']);
echo '<article>'.$content.'</article>';
}
} catch (Exception $e){
die($e->getMessage());
}
这段代码会捕获所有异常情况,并输出错误信息。
六、总结
通过本文的介绍,相信大家已经了解如何使用PHP获取公众号已发布的文章。需要注意的是,本文只是提供了一种获取文章的方法,具体实现还需要根据自己的需求进行调整。同时,为了保护用户隐私和版权,建议在使用时遵守相关法律法规。
七、优采云
优采云是一家专业的SEO优化服务商,为企业提供综合性的SEO优化解决方案。我们拥有一支高效专业的团队,可以为您量身定制最适合您企业的SEO优化方案。如果您有SEO优化需求,请联系我们:www.ucaiyun.com。