用PHP爬取公众号文章,简单易学!
优采云 发布时间: 2023-06-21 21:372023年06月21日,随着微信公众号的普及,越来越多的人开始关注公众号文章的内容。但是有些文章需要登录后才能查看,这就需要我们使用PHP模拟登录来获取这些文章了。本文将介绍如何使用PHP模拟登录并爬取公众号文章。
一、了解微信公众号
首先,我们需要了解微信公众号的基本结构和相关API接口。微信公众号分为订阅号、服务号和企业号三种类型,其中订阅号和服务号是最常见的两种类型。我们主要关注订阅号和服务号的文章爬取。
二、获取微信公众平台账户信息
在开始模拟登录之前,我们需要先获取到自己微信公众平台账户的相关信息,包括账户名和密码等。这些信息可以通过微信公众平台官网进行申请和获取。
三、使用PHP模拟登录
使用PHP模拟登录,我们需要先获取到微信公众平台登录页面的相关参数,并将其传递给登录接口进行验证。具体代码如下:
php
<?php
//设置POST请求参数
$post_data = array(
'username'=>'your_username',
'password'=>'your_password',
'imgcode'=>'',
'f'=>'json'
);
//设置请求头信息
$header = array(
'Referer:https://mp.weixin.qq.com/',
'User-Agent:Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
'X-Requested-With:XMLHttpRequest'
);
//发送POST请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'https://mp.weixin.qq.com/cgi-bin/bizlogin?action=startlogin');
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt');
$result = curl_exec($ch);
curl_close($ch);
//解析返回结果
$json = json_decode($result,true);
if($json['base_resp']['ret']==0){
echo "登录成功";
}else{
echo "登录失败";
}
?>
四、获取公众号文章列表
在成功登录之后,我们需要获取公众号文章列表。我们可以通过微信公众平台提供的API接口来获取文章列表,并使用正则表达式进行数据筛选。具体代码如下:
php
<?php
//设置GET请求参数
$url ="https://mp.weixin.qq.com/cgi-bin/appmsg?token=".$token."&lang=zh_CN&f=json&ajax=1&random=".time()."&action=list_ex&begin=0&count=5&query=&fakeid=".$fakeid."&type=9";
//设置请求头信息
$header = array(
'Referer:https://mp.weixin.qq.com/',
'User-Agent:Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
'X-Requested-With:XMLHttpRequest'
);
//发送GET请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');
$result = curl_exec($ch);
curl_close($ch);
//解析返回结果
$json = json_decode($result,true);
foreach ($json['app_msg_list'] as $key =>$value){
echo "文章标题:".$value['title']."<br/>";
echo "文章链接:".$value['link']."<br/>";
}
?>
五、获取公众号文章内容
在获取到公众号文章列表之后,我们需要进一步获取每篇文章的具体内容。我们可以通过正则表达式来筛选出需要的信息,并进行相应处理和存储。具体代码如下:
php
<?php
//设置GET请求参数
$url ="https://mp.weixin.qq.com/s?__biz=".$biz."&mid=".$mid."&idx=".$idx."&sn=".$sn."&scene=".$scene."&t=".$t."&amp;devicetype=".$devicetype."&2af72f100c356273d46284f6fd1dfc08=".
用PHP爬取公众号文章,简单易学!
优采云 发布时间: 2023-06-21 21:372023年06月21日,随着微信公众号的普及,越来越多的人开始关注公众号文章的内容。但是有些文章需要登录后才能查看,这就需要我们使用PHP模拟登录来获取这些文章了。本文将介绍如何使用PHP模拟登录并爬取公众号文章。
一、了解微信公众号
首先,我们需要了解微信公众号的基本结构和相关API接口。微信公众号分为订阅号、服务号和企业号三种类型,其中订阅号和服务号是最常见的两种类型。我们主要关注订阅号和服务号的文章爬取。
二、获取微信公众平台账户信息
在开始模拟登录之前,我们需要先获取到自己微信公众平台账户的相关信息,包括账户名和密码等。这些信息可以通过微信公众平台官网进行申请和获取。
三、使用PHP模拟登录
使用PHP模拟登录,我们需要先获取到微信公众平台登录页面的相关参数,并将其传递给登录接口进行验证。具体代码如下:
php
<?php
//设置POST请求参数
$post_data = array(
'username'=>'your_username',
'password'=>'your_password',
'imgcode'=>'',
'f'=>'json'
);
//设置请求头信息
$header = array(
'Referer:https://mp.weixin.qq.com/',
'User-Agent:Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
'X-Requested-With:XMLHttpRequest'
);
//发送POST请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'https://mp.weixin.qq.com/cgi-bin/bizlogin?action=startlogin');
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt');
$result = curl_exec($ch);
curl_close($ch);
//解析返回结果
$json = json_decode($result,true);
if($json['base_resp']['ret']==0){
echo "登录成功";
}else{
echo "登录失败";
}
?>
四、获取公众号文章列表
在成功登录之后,我们需要获取公众号文章列表。我们可以通过微信公众平台提供的API接口来获取文章列表,并使用正则表达式进行数据筛选。具体代码如下:
php
<?php
//设置GET请求参数
$url ="https://mp.weixin.qq.com/cgi-bin/appmsg?token=".$token."&lang=zh_CN&f=json&ajax=1&random=".time()."&action=list_ex&begin=0&count=5&query=&fakeid=".$fakeid."&type=9";
//设置请求头信息
$header = array(
'Referer:https://mp.weixin.qq.com/',
'User-Agent:Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
'X-Requested-With:XMLHttpRequest'
);
//发送GET请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');
$result = curl_exec($ch);
curl_close($ch);
//解析返回结果
$json = json_decode($result,true);
foreach ($json['app_msg_list'] as $key =>$value){
echo "文章标题:".$value['title']."<br/>";
echo "文章链接:".$value['link']."<br/>";
}
?>
五、获取公众号文章内容
在获取到公众号文章列表之后,我们需要进一步获取每篇文章的具体内容。我们可以通过正则表达式来筛选出需要的信息,并进行相应处理和存储。具体代码如下:
php
<?php
//设置GET请求参数
$url ="https://mp.weixin.qq.com/s?__biz=".$biz."&mid=".$mid."&idx=".$idx."&sn=".$sn."&scene=".$scene."&t=".$t."&amp;devicetype=".$devicetype."&2af72f100c356273d46284f6fd1dfc08=".$2af72f100c356273d46284f6fd1dfc08."&lang=zh_CN&nettype=WIFI&fontScale=100&pass_ticket=".$pass_ticket."&wx_header=1";
//设置请求头信息
$header = array(
'Referer:https://mp.weixin.qq.com/',
'User-Agent:Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
);
//发送GET请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');
$result = curl_exec($ch);
curl_close($ch);
//解析返回结果
preg_match('/<title>(.*?)<\/title>/',$result,$title);
preg_match('/<div class="rich_media_content" id="js_content">(.*?)<\/div>/is',$result,$content);
echo "文章标题:".$title[1]."<br/>";
echo "文章内容:".$content[1]."<br/>";
?>
六、使用简单爬虫爬取文章
如果我们需要批量获取公众号的文章,可以使用简单的爬虫来实现。我们可以通过递归访问公众号文章列表页面,获取所有文章的链接,并进行相应处理和存储。具体代码如下:
php
<?php
//设置GET请求参数
$url ="https://mp.weixin.qq.com/cgi-bin/appmsg?token=".$token."&lang=zh_CN&f=json&ajax=1&random=".time()."&action=list_ex&begin=".$offset."&count=".$count."&query=&fakeid=".$fakeid."&type=9";
//设置请求头信息
$header = array(
'Referer:https://mp.weixin.qq.com/',
'User-Agent:Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
'X-Requested-With:XMLHttpRequest'
);
//发送GET请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');
$result = curl_exec($ch);
curl_close($ch);
//解析返回结果
$json = json_decode($result,true);
foreach ($json['app_msg_list'] as $key =>$value){
echo "文章标题:".$value['title']."<br/>";
echo "文章链接:".$value['link']."<br/>";
//获取文章内容
$url =$value['link'];
//设置请求头信息
$header = array(f56ac3d0fc4809ae1c100a6b745ccf4b'Referer:https://mp.weixin.qq.com/',f56ac3d0fc4809ae1c100a6b745ccf4b'User-Agent:Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
);
//发送GET请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');
$result = curl_exec($ch);
curl_close($ch);
//解析返回结果
preg_match('/<title>(.*?)<\/title>/',$result,$title);
preg_match('/<div class="rich_media_content" id="js_content">(.*?)<\/div>/is',$result,$content);
echo "文章标题:".$title[1]."<br/>";
echo "文章内容:".$content[1]."<br/>";
}
//递归获取下一页文章列表
if($json['app_msg_cnt']>$offset +$count){
$offset +=$count;
getArticleList($token,$fakeid,$offset,$count);
}
?>
七、注意事项
在进行公众号文章爬取时,需要注意以下几点:
1.爬取的频率不能过快,否则可能会被微信公众平台封禁账户;
2.需要定期更新自己的cookie信息,否则登录将会失败;
3.爬取到的文章内容只供个人学习和研究使用,不得用于商业用途。
八、总结
本文介绍了如何使用PHP模拟登录并爬取微信公众号文章。通过本文的介绍,我们可以了解到微信公众号的基本结构和相关API接口,以及如何使用PHP进行模拟登录和爬取文章。希望本文对您有所帮助。
0 个评论

官方客服QQ群
在
线
客
服
//设置请求头信息
$header = array(
'Referer:https://mp.weixin.qq.com/',
'User-Agent:Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
);
//发送GET请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');
$result = curl_exec($ch);
curl_close($ch);
//解析返回结果
preg_match('/<title>(.*?)<\/title>/',$result,$title);
preg_match('/<div class="rich_media_content" id="js_content">(.*?)<\/div>/is',$result,$content);
echo "文章标题:".$title[1]."<br/>";
echo "文章内容:".$content[1]."<br/>";
?>
六、使用简单爬虫爬取文章
如果我们需要批量获取公众号的文章,可以使用简单的爬虫来实现。我们可以通过递归访问公众号文章列表页面,获取所有文章的链接,并进行相应处理和存储。具体代码如下:
php
<?php
//设置GET请求参数
$url ="https://mp.weixin.qq.com/cgi-bin/appmsg?token=".$token."&lang=zh_CN&f=json&ajax=1&random=".time()."&action=list_ex&begin=".$offset."&count=".$count."&query=&fakeid=".$fakeid."&type=9";
//设置请求头信息
$header = array(
'Referer:https://mp.weixin.qq.com/',
'User-Agent:Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
'X-Requested-With:XMLHttpRequest'
);
//发送GET请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');
$result = curl_exec($ch);
curl_close($ch);
//解析返回结果
$json = json_decode($result,true);
foreach ($json['app_msg_list'] as $key =>$value){
echo "文章标题:".$value['title']."<br/>";
echo "文章链接:".$value['link']."<br/>";
//获取文章内容
$url =$value['link'];
//设置请求头信息
$header = array(f56ac3d0fc4809ae1c100a6b745ccf4b'Referer:https://mp.weixin.qq.com/',f56ac3d0fc4809ae1c100a6b745ccf4b'User-Agent:Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
);
//发送GET请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');
$result = curl_exec($ch);
curl_close($ch);
//解析返回结果
preg_match('/<title>(.*?)<\/title>/',$result,$title);
preg_match('/<div class="rich_media_content" id="js_content">(.*?)<\/div>/is',$result,$content);
echo "文章标题:".$title[1]."<br/>";
echo "文章内容:".$content[1]."<br/>";
}
//递归获取下一页文章列表
if($json['app_msg_cnt']>$offset +$count){
$offset +=$count;
getArticleList($token,$fakeid,$offset,$count);
}
?>
七、注意事项
在进行公众号文章爬取时,需要注意以下几点:
1.爬取的频率不能过快,否则可能会被微信公众平台封禁账户;
2.需要定期更新自己的cookie信息,否则登录将会失败;
3.爬取到的文章内容只供个人学习和研究使用,不得用于商业用途。
八、总结
本文介绍了如何使用PHP模拟登录并爬取微信公众号文章。通过本文的介绍,我们可以了解到微信公众号的基本结构和相关API接口,以及如何使用PHP进行模拟登录和爬取文章。希望本文对您有所帮助。