前提

小程序需要一个获取微信文章封面和标题的功能,然后网上找了一圈,找到了下面这个代码,但是已经不能使用了,获取不到微信的标题,自己改动之后分享给有需要的人。

项目原作者git

数据结构

{title: '【福利】免费领取一个月腾讯视频会员' // 标题digest: "【福利】免费领取一个月腾讯视频会员",   // 描述content_url: "",    // 内容天cover: "",  // 封面wechatname: "故事胶片",   // 名称
}
复制代码

使用方法

/**
* 微信公众号文章爬取类
* 使用方法:
* $crawler = new WxCrawler();
* $content = $crawler->crawByUrl($url);
*/
复制代码

主要代码

代理

/** @var 代理  */
protected $agent = ["Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)","Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)","Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)","Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)","Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)","Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)","Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/523.15 (KHTML, like Gecko, Safari/419.3) Arora/0.3 (Change: 287 c9dfb30)","Mozilla/5.0 (X11; U; Linux; en-US) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Arora/0.6","Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1","Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0","Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5","Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20","Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52",
];
public $host = '';
public $header = '';
public $referer = '';
public $antiLeech = '';
复制代码

初始化curl信息

/** @var 初始化curl信息  */
$this->header  = $this->agent[rand(0,count($this->agent) - 1)];
$this->referer = empty($referer)?'http://weixin.sogou.com/' : $referer;
$this->host    = empty($host)?'weixin.sogou.com' : $host;
/** @var 处理微信图片的防盗链 */
$this->antiLeech = 'http://'.$_SERVER['SERVER_NAME'].'/tool.php?url=';
复制代码

爬取内容

/*** 爬取内容* @author bignerd* @since  2016-08-16T10:13:58+0800* @param  $url*/$ch=curl_init($url);
$options = [CURLOPT_USERAGENT => $this->agent,CURLOPT_REFERER => $this->referer,
];
curl_setopt_array($ch,$options);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_BINARYTRANSFER,true);
curl_setopt($ch,CURLOPT_TIMEOUT,60);$output=curl_exec($ch);return $output;$content = $this->_get($url);
$basicInfo = $this->articleBasicInfo($content);
list($content_html, $content_text) = $this->contentHandle($content);
return array_merge($basicInfo,['content_html' => $content_html,'content_text' => $content_text]);
复制代码

处理微信文章源码,提取文章主体,处理图片链接

/*** 处理微信文章源码,提取文章主体,处理图片链接* @author bignerd* @since  2016-08-16T15:59:27+0800* @param  $content 抓取的微信文章源码* @return [带图html文本,无图html文本]*/
public function contentHandle($content)
{$content_html_pattern = '/<div class="rich_media_content " id="js_content">(.*?)<\/div>/s';preg_match_all($content_html_pattern, $content, $html_matchs);$content_html = $html_matchs[0][0];/** @var  带图片html文本 */$content_html = preg_replace_callback('/data-src="(.*?)"/', function($matches){return 'src='.$this->antiLeech.urlencode($matches[1]);}, $content_html);/** @var  无图html文本 */$content_text = preg_replace('/<img.*?>/s','',$content_html);return [$content_html,$content_text];
}
复制代码

获取文章的基本信息

/*** 获取文章的基本信息* @author bignerd* @since  2016-08-16T17:16:32+0800* @param  $content 文章详情源码* @return $basicInfo*/
//待获取item
$item = ['ct' => 'date',//发布时间'msg_title' => 'title',//描述'msg_desc' => 'digest',//描述'msg_link' => 'content_url',//文章链接'msg_cdn_url' => 'cover',//封面图片链接'nickname' => 'wechatname',//公众号名称
];
$basicInfo = ['author' => '','copyright_stat' => '',
];
foreach ($item as $k => $v) {if ($k == 'msg_title') {$pattern = '/ var '.$k." = '(.*?)'/s";} else {$pattern = '/ var '.$k.' = "(.*?)";/s';}preg_match_all($pattern,$content,$matches);if(array_key_exists(1, $matches) && !empty($matches[1][0])){$basicInfo[$v] = $this->htmlTransform($matches[1][0]);} else {$basicInfo[$v] = '';}
}
/** 获取作者 */
preg_match('/<em class="rich_media_meta rich_media_meta_text">(.*?)<\/em>/s', $content, $matchAuthor);
if(!empty($matchAuthor[1])) $basicInfo['author'] = $matchAuthor[1];
/** 文章类型 */
preg_match('/<span id="copyright_logo" class="rich_media_meta meta_original_tag">(.*?)<\/span>/s', $content, $matchType);
if(!empty($matchType[1])) $basicInfo['copyright_stat'] = $matchType[1];return $basicInfo;
复制代码

特殊字符转换

/**
* 特殊字符转换
* @author bignerd
* @since  2016-08-16T17:30:52+0800
* @param  $string
* @return $string
*/
$string = str_replace('&quot;','"',$string);
$string = str_replace('&amp;','&',$string);
$string = str_replace('amp;','',$string);
$string = str_replace('&lt;','<',$string);
$string = str_replace('&gt;','>',$string);
$string = str_replace('&nbsp;',' ',$string);
$string = str_replace("\\", '',$string);
return $string;
复制代码

项目地址

github

体验地址

体验看这里

前端微信群

如何获取微信文章封面和标题相关推荐

  1. 一键获取推文封面及标题摘要

    一键获取推文封面及标题摘要 此软件可以采用MFC编写 可以一键获取微信公众号推送的封面,标题和摘要 软件会自动保存封面jpg文件在程序同一目录下,同时可以一键复制信息, 下载地址可以点击我头像查看我上 ...

  2. 【微信文章封面】微信分别设置封面图和分享图的技巧

    微信分别设置微信文章封面和用户分享时展示的小正方形图时候,只需要在设置比例为2.35:1封面图片的时候,同时设置1:1的封面图,并框选2.35:1封面图上任意想要设定的部分图片即可.

  3. 如何获取微信文章阅读数和点赞数

    最近微博感觉热度有所下降,而微信则越来越火,随着上次改版文章阅读的公开也预示着微信将向营销行业进军.尽管与之前腾讯的说法有些不搭,但毕竟这是块肥肉,最终还是hold 不住了.   阅读数和点赞数公开后 ...

  4. php 获取微信文章阅读量,获取微信公众号的文章的阅读数的实践(请求参数不支持文章 ID)...

    1.新的需求为:需要实现微信渠道的文章的阅读数的显示.如图1 图1 2.实则最为理想的情况,应该是能够基于文章 ID 获取此文章的阅读数,就像抖音.查看抖音开放平台文档 – 资源中心 – Open A ...

  5. 抓包获取微信文章阅读数实战

    首先需要获得一篇文章的地址 例如    https://mp.weixin.qq.com/s/S_g27h2KJPSb1NZ9DPM5Ig 我们在手机中访问 可以看到他的阅读数和点赞数 如下图 手机获 ...

  6. php获取微信文章阅读数,详解PHP+fiddler抓包采集微信文章阅读数点赞数的思路

    简介: 分析接口知道要获取文章阅读数和点赞数必须有key和uin这两个关键参数,不同公众号key不一样(据说有万能微信key,不懂怎么搞到),同一个公众号key大概半小时会过期 提交链接获取文章阅读量 ...

  7. 最近大火的微信红包封面,可以免费领取了!

    "手慢了,红包封面派完了." 2月8日下午4时5分,"米粉"小陈在"雷军"微信公众号留言"新春红包","雷军& ...

  8. 微信文章抓取:微信临时链接转永久链接方法,一招摆脱链接过期烦恼

    上一篇文章<微信文章抓取:微信公众号文章抓取常识之临时链接.永久链接>中介绍了微信临时链接和微信永久链接的情况.那么大家一定会有一个问题:如何让临时链接不再过期?或者说如何把临时链接转换为 ...

  9. 微信文章抓取:微信公众号文章抓取常识之临时链接、永久链接

    未经允许请勿转载 曾经尝试过抓取微信文章的小伙伴,一定很熟悉搜狗微信.搜狗微信是腾讯官方提供的搜索引擎,专门用来搜索微信公众号发表的文章(不包含服务号). 对于想要获取微信文章进行研究学习的小伙伴,首 ...

最新文章

  1. ebuild 中的软件包依赖
  2. C#调用C++写的Dll时的运行时错误解决
  3. Flutter 实例 - 加载更多的ListView
  4. 人形机器人正在美国史密森尼博物馆中担任导游的工作
  5. 优化的交换排序(冒泡排序)_C程序实现优化的冒泡排序
  6. 信息学奥赛一本通(1098:质因数分解)
  7. C++ 封装DLL遇到的一些坑爹问题与解决方案
  8. tornado+websocket+mongodb实现在线视屏文字聊天
  9. python按条件拆分列表元素_Python按多个元素和条件拆分列表
  10. 中兴光猫F412超级管理员密码获取
  11. 导数、微分、偏导数、全微分、方向导数、梯度的定义与关系
  12. iOS15新特性、iOS15适配
  13. 重庆大学计算机学院马前,以梦为马,以论为矛
  14. React Native 每日一学(Learn a little every day)
  15. 【知识兔】Excel教程小技巧之常用快捷键汇总
  16. Python简单绘制柱状图
  17. JavaScript保留小数位数代码
  18. 联合分析法(Python实现)
  19. matlab实验结果图片保存
  20. K-均值聚类算法(K-Means)

热门文章

  1. (区块链溯源)基于NFC的区块链物流溯源跟踪防伪
  2. node读取文件操作
  3. 【Python语法系列】第三章:Python判断语句
  4. 教育期刊《电脑校园》简介及投稿要求
  5. [YOLOv7]基于YOLOv7的食物卡路里检测系统(源码&部署教程&数据集)
  6. QQ营销,你必须知道的技巧
  7. 计算机财务管理复利现值的公式,中级《财务管理》公式大全汇总(超详细版)...
  8. java计算机毕业设计知识管理系统源码+数据库+系统+lw文档
  9. 易语言教程数组删除成员和删除指定成员
  10. 使用Java实现普朗克常数计算