轻松获取微信公众号文章,querylist帮你实现!
优采云 发布时间: 2023-03-24 12:15自媒体时代,微信公众号已成为了一个不可或缺的平台。而对于那些想要从中获取足够流量的人来说,采集微信公众号文章显然是一种非常重要的手段。本文将介绍一种利用querylist采集微信公众号文章的方法,并结合实际案例进行详细分析。
1. querylist概述
querylist是一个基于PHP开发的简单、灵活、高效的Web采集工具。它可以通过CSS选择器、XPath表达式等方式来定位页面中的元素,并提供了丰富的API来实现数据提取、数据筛选、数据清洗等操作。querylist可以广泛应用于网页抓取、数据分析、信息监控等领域。
2. querylist安装
要使用querylist,首先需要在本地安装PHP环境。可以下载PHP官方网站上最新版本的PHP并按照说明进行安装。安装好PHP后,可以使用composer来安装querylist:
composer require jaeger/querylist
3.获取微信公众号文章链接
在采集微信公众号文章之前,我们需要先获取到目标公众号的文章链接。这里我们以“优采云”为例,通过以下步骤获取其最新10篇文章链接:
(1)打开微信公众号“优采云”;
(2)在公众号主页中点击“历史文章”,进入历史文章页面;
(3)使用浏览器开发者工具,查看历史文章列表中每篇文章的链接地址,并保存到一个数组中。
代码如下:
php
require 'vendor/autoload.php';
use QL\QueryList;
//获取最新10篇文章链接
$urls =[];
$html = file_get_contents('https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzIyMDMzMTQ0Nw==&scene=124&#wechat_redirect');
$ql = QueryList::html($html);
$ql->find('.weui_media_title')->map(function($item) use(&$urls){
$urls[]=$item->attr('hrefs');
});
$urls = array_slice($urls,0, 10);
print_r($urls);
4.采集微信公众号文章内容
获取到文章链接后,就可以使用querylist来采集每篇文章的内容了。这里我们以第一篇文章为例,采集其标题、作者、发布时间和正文内容。
代码如下:
php
require 'vendor/autoload.php';
use QL\QueryList;
//获取第一篇文章内容
$url ='https://mp.weixin.qq.com/s?src=11&timestamp=1648155097&ver=3349&signature=jt5yljKuZrW8H4jE4pVJ1cU6sJ4hL9oQmTJ0dZzY1S4HJxgI1zB6jvLQ2zG0RfB6c7U6P3q6NpZG1E4lLJlDzTbCv-4yWj2X9T0TJYsZBb8gSxgdJyKw*VQ2aLkR7WnJ&new=1';
$html = file_get_contents($url);
$ql = QueryList::html($html);
$title =$ql->find('#activity-name')->text();
$author =$ql->find('#js_name')->text();
$time =$ql->find('#publish_time')->text();
$content =$ql->find('#js_content')->html();
echo "标题:{$title}\n";
echo "作者:{$author}\n";
echo "发布时间:{$time}\n";
echo "正文内容:\n{$content}\n";
5.批量采集微信公众号文章
有了单篇文章采集的基础,我们可以很容易地将其扩展到多篇文章的采集。这里我们对前面获取到的10篇文章链接进行循环遍历,依次采集每篇文章的内容,并将结果保存到一个数组中。
代码如下:
php
require 'vendor/autoload.php';
use QL\QueryList;
//批量采集文章内容
$urls =[
'https://mp.weixin.qq.com/s?src=11&timestamp=1648155097&ver=3349&signature=jt5yljKuZrW8H4jE4pVJ1cU6sJ4hL9oQmTJ0dZzY1S4HJxgI1zB6jvLQ2zG0RfB6c7U6P3q6NpZG1E4lLJlDzTbCv-4yWj2X9T0TJYsZBb8gSxgdJyKw*VQ2aLkR7WnJ&new=1',
//省略其余文章链接
];
$result =[];
foreach ($urls as $url){
$html = file_get_contents($url);
$ql = QueryList::html($html);
$title =$ql->find('#activity-name')->text();
$author =$ql->find('#js_name')->text();
$time =$ql->find('#publish_time')->text();
$content =$ql->find('#js_content')->html();
$result[]=[
'title'=>$title,
'author'=>$author,
'time'=>$time,
'content'=>$content
];
}
print_r($result);
6.结果展示
最后,我们将采集到的结果进行展示。可以将其保存到数据库中,也可以将其输出为HTML页面。
代码如下:
php
require 'vendor/autoload.php';
use QL\QueryList;
//批量采集文章内容
$urls =[
'https://mp.weixin.qq.com/s?src=11&timestamp=1648155097&ver=3349&signature=jt5yljKuZrW8H4jE4pVJ1cU6sJ4hL9oQmTJ0dZzY1S4HJxgI1zB6jvLQ2zG0RfB6c7U6P3q6NpZG1E4lLJlDzTbCv-4yWj2X9T0TJYsZBb8gSxgdJyKw*VQ2aLkR7WnJ&new=1',
//省略其余文章链接
];
$result =[];
foreach ($urls as $url){
$html = file_get_contents($url);
$ql = QueryList::html($html);
$title =$ql->find('#activity-name')->text();
$author =$ql->find('#js_name')->text();
$time =$ql->find('#publish_time')->text();
$content =$ql->find('#js_content')->html();
$result[]=[
'title'=>$title,
'author'=>$author,
'time'=>$time,
'content'=>$content
];
}
//将结果输出为HTML页面
echo "<html><head><meta charset='UTF-8'><title>优采云最新文章</title></head><body>";
foreach ($result as $item){
echo "<h2>{$item['title']}</h2>";
echo "<p>作者:{$item['author']},发布时间:{$item['time']}</p>";
echo "<div>{$item['content']}</div>";
}
echo "</body></html>";
//将结果保存到数据库中
$conn = new mysqli('localhost','root','','test');
$conn->set_charset('utf8');
$stmt =$conn->prepare("INSERT INTO articles(title, author, time, content) VALUES (?,?,?,?)");
foreach ($result as $item){
$stmt->bind_param('ssss',$item['title'],$item['author'],$item['time'],$item['content']);
$stmt->execute();
}
$stmt->close();
$conn->close();
以上就是利用querylist采集微信公众号文章的详细步骤和代码实现。通过本文的介绍,相信读者已经掌握了一种简单、高效的采集方式,并可以将其应用于实际项目中。如果您还有其他相关问题,欢迎咨询优采云,我们将为您提供最优质的服务和解决方案。