用PHP爬取公众号文章,简单易学!

优采云 发布时间: 2023-06-21 21:37

  2023年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."&devicetype=".$devicetype."&2af72f100c356273d46284f6fd1dfc08=".

用PHP爬取公众号文章,简单易学!

优采云 发布时间: 2023-06-21 21:37

  2023年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."&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群


线

af72f100c356273d46284f6fd1dfc08."&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群

微信人工客服

QQ人工客服


线