用PHP获取微信公众号文章,轻松实现!

linbojue
• 阅读 654

微信公众号已经成为了很多人获取信息的重要途径,而在开发中,有时候需要通过代码来获取公众号文章。PHP作为一种广泛应用的Web编程语言,也可以实现这一功能。本文将详细介绍PHP如何获取微信公众号文章。

一、准备工作

在开始之前,我们需要先准备好以下两个东西:一个是微信公众平台的AppID和AppSecret,另一个是PHP的curl扩展。如果你还没有注册过微信公众平台账号,请先注册并创建一个应用。

二、获取access_token

接下来,我们需要通过微信API来获取access_token。access_token是调用微信API的凭证,有效期为2小时。我们可以通过以下代码来获取:

php$url =';appid=YOUR_APPID&secret=YOUR_APPSECRET';$result = file_get_contents($url);$json = json_decode($result, true);$access_token =$json['access_token']; 三、获取文章列表

有了access_token之后,我们就可以通过微信API来获取公众号的文章列表了。具体方法是调用以下接口:

php$url =''.$access_token;$data = array( 'type'=>'news', 'offset'=>0, 'count'=> 20);$options = array( 'http'=> array( 'method'=>'POST', 'header'=>"Content-Type: application/json\r\n", 'content'=> json_encode($data) ));$context = stream_context_create($options);$result = file_get_contents($url, false,$context);$json = json_decode($result, true);$articles =$json['item']; 这里我们设置了type为news,表示获取的是图文素材;offset为0,表示从第一篇文章开始获取;count为20,表示一次最多获取20篇文章。

四、获取文章内容

有了文章列表之后,我们就可以通过以下接口来获取每篇文章的具体内容:

php$url =''.$access_token;$data = array( 'media_id'=>$media_id);$options = array( 'http'=> array( 'method'=>'POST', 'header'=>"Content-Type: application/json\r\n", 'content'=> json_encode($data) ));$context = stream_context_create($options);$result = file_get_contents($url, false,$context);$json = json_decode($result, true);$content =$json['content']; 这里的$media_id是每篇文章的唯一标识符。

五、处理HTML内容

获取到的文章内容是HTML格式的,我们需要对其进行处理才能显示在页面上。具体方法是使用PHP内置的DOMDocument类来解析HTML并提取所需内容。以下是一个示例代码:

php$doc = new DOMDocument();@$doc->loadHTML($content);$xpath = new DOMXPath($doc);$title =$xpath->query('//h2[@class="rich_media_title"]')->item(0)->nodeValue;$content ='';$paragraphs =$xpath->query('//div[@class="rich_media_content"]/p');foreach ($paragraphs as $paragraph){ $content .='

'.$paragraph->nodeValue .'

';} 这里我们提取了文章的标题和正文内容,可以根据需要进一步处理。

https://www.720yun.com/vr/03ejzskf5k2 https://www.720yun.com/vr/1edjzskf5m8 https://www.720yun.com/vr/467jzskf5n2

六、完整示例

下面是一个完整的示例代码,可以直接复制粘贴使用:

php$appid ='YOUR_APPID';$appsecret ='YOUR_APPSECRET';$url =';appid='.$appid .'&secret='.$appsecret;$result = file_get_contents($url);$json = json_decode($result, true);$access_token =$json['access_token'];$url =''.$access_token;$data = array( 'type'=>'news', 'offset'=>0, 'count'=> 20);$options = array( 'http'=> array( 'method'=>'POST', 'header'=>"Content-Type: application/json\r\n", 'content'=> json_encode($data) ));$context = stream_context_create($options);$result = file_get_contents($url, false,$context);$json = json_decode($result, true);$articles =$json['item'];foreach ($articles as $article){ $media_id =$article['media_id']; $url =''.$access_token; $data = array( 'media_id'=>$media_id ); $options = array( 'http'=> array( 'method'=>'POST', 'header'=>"Content-Type: application/json\r\n", 'content'=> json_encode($data) ) ); $context = stream_context_create($options); $result = file_get_contents($url, false,$context); $json = json_decode($result, true); $content =$json['content']; $doc = new DOMDocument(); @$doc->loadHTML($content); $xpath = new DOMXPath($doc); $title =$xpath->query('//h2[@class="rich_media_title"]')->item(0)->nodeValue; $content =''; $paragraphs =$xpath->query('//div[@class="rich_media_content"]/p'); foreach ($paragraphs as $paragraph){ $content .='

'.$paragraph->nodeValue .'

'; } echo '

'. htmlspecialchars($title).'

'; echo '
'. htmlspecialchars_decode($content).'
';} 七、总结

通过以上步骤,我们就可以使用PHP来获取微信公众号的文章了。需要注意的是,由于微信API有调用频率限制,建议在获取文章列表时一次获取较多的文章,然后逐篇获取文章内容。另外,由于微信公众号文章的HTML结构可能不同,需要根据实际情况进行调整。

点赞
收藏
评论区
推荐文章
微标题信公众号文章,阅读数,点赞数历史文章抓取
微标题信公众号文章,阅读数,点赞数历史文章抓取需求最近在做舆情与微信文章相关的数据抓取,发现微信公众号有些难点很难克服。市面上流行的数据抓取思路要么被腾讯封杀,要么操作难度大。解决方案搜狗微信无法采集历史,而且搜索也不按时间排序。获取的数据的价值不高,仅仅可以通过他获取公众号的biz。微信公众平台微信公
刘望舒 刘望舒
3年前
Android Binder原理(五)系统服务的获取过程
Binder原理Android框架层本文首发于微信公众号「后厂技术官」<!more前言在本系列的此前文章中,以MediaPlayerService为例,讲解了系统服务是如何注册的(addService),既然有注册那肯定也要有获取,本篇文章仍旧以MediaPlayerService为例,来讲解系统服务的获取过程(getService)。文章会分为两个部分
MaxSky MaxSky
3年前
PHP 微信公众号消息加解密
公众号配置根据提示设置即可:【图中信息均为无意义数据,仅供参考。注意服务器地址需可接收GET/POST两种请求】AESKey直接点一下随机生成即可,Token可以生成一个UUID再把UUID进行MD5一次即可。接收关注事件消息示例请求参数校验这一步根据项目情况,可供参考:(Lumen框架)php$valida
Wesley13 Wesley13
3年前
JAVA获取微信小程序openid和获取公众号openid,以及通过openid获取用户信息
一,首先说明下这个微信的openid  为了识别用户,每个用户针对每个公众号会产生一个安全的OpenID,如果需要在多公众号、移动应用之间做用户共通,则需前往微信开放平台,将这些公众号和应用绑定到一个开放平台账号下,绑定后,一个用户虽然对多个公众号和应用有多个不同的OpenID,但他对所有这些同一开放平台账号下的公众
Stella981 Stella981
3年前
C#微信公众号开发——获取access_token
access\_token是公众号的全局唯一票据,公众号调用各接口时都需使用access\_token。正常情况下access\_token有效期为7200秒(两个小时),微信获取access\_token接口每日限制调用2000次。(一)access\_token的作用  access\_token由公众号的AppID和AppSecret组成,所以
Wesley13 Wesley13
3年前
h5 接入微信支付
我们公司,现在用ping做h5接入,用的是h5"壹收款"准备:如果公司,现在还没有公众号的话,支付宝。可以把这些工作,给ping来做这些事情 1.注册微信公众号,开通支付功能。2.注册ping (如果是自己开开通的微信支付,要填写相关信息)3.微信设置网页授权获取用户基本信
Stella981 Stella981
3年前
JFinal极速开发微信公众号
10分钟搭建属于自己的ngork服务器,实现内网穿透(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fblog.csdn.net%2Fzyw_java%2Farticle%2Fdetails%2F70341106)Android微信、支付App支付SDK(http
Stella981 Stella981
3年前
Blob分析
文章转自微信公众号:机器视觉那些事\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\公众号:机器视觉那些事儿\\\\\\
Wesley13 Wesley13
3年前
Java 8 创建 Stream 的 10 种方式,我保证你受益无穷!
之前栈长分享过Java8一系列新特性的文章,其中重点介绍了Stream.!(http://img.javastack.cn/20190613135450.png)!(http://img.javastack.cn/20190613135537.png)获取上面这份Java8~12系列新特性干货文章,请在微信搜索关注微信公众号:
linbojue linbojue
8个月前
用php轻松爬微信文章,附完整代码
微信公众号成为了现代人获取资讯的主要途径之一,然而每天需要手动打开公众号查看最新文章,不仅费时费力,而且易错漏。那么有没有一种方法可以自动化地获取微信文章呢?答案是有的,只需要使用php编写爬虫程序即可。本文将详细介绍如何使用php爬取微信文章,并提供完整