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。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线