手机版

PHP编写微信微信官方账号文章页面收集方法

时间:2021-09-02 来源:互联网 编辑:宝哥软件园 浏览:

通过搜狗搜索收集微信官方账号历史新闻存在几个问题:

1.有验证码;

2.历史消息列表只有最新的10条群发内容;

3.文章地址有效;

4.都说批量采集要换IP;

我前一篇文章中的方法没有这些问题,虽然收集系统并不像传统的收集器写规则爬的那么简单。但是,批量采集的效率在构建一次后还是可以的。而且收集到的文章地址永久有效,一个微信官方账号的所有历史新闻都可以收集到。先说一篇微信官方账号文章的链接地址:

1.微信右上角菜单复制的链接地址:

http://mp.weixin.qq.com/s/fF34bERZ0je_8RWEJjoZ5A

2.在历史消息列表中获得的地址:

http://mp.weixin.qq.com/s?_ _ biz=mjm5 ndawmta 2ma==mid=2695729619 idx=1sn=8 be 0 b 6 BD 0210 CEE 0d 492 ebdf 20 f 7371 fchksm=83d 74818 B4 a 0 c 10 ef 286 b 33 bb 7 deb 73226125 f 866 DDB 5 b 2781166066 a 69 aff 3705 eadb3 b 85 scene=4 #微信_redirect

3.完整的真实地址:

https://mp.weixin.qq.com/s?_ _ biz=mjm5 ndawmta 2ma==mid=2695729619 idx=1sn=8 be 0 b 6 BD 0210 CEE 0d 492 ebdf 20 f 7371 fchksm=83d 74818 B4 a 0 c 10 ef 286 b 33 bb 7 deb 73226125 f 866 DDB 5 b 2781166066 a 69 aff 3705 ea BDB 3 b 85 scene=c 81d

以上三个地址是同一篇文章的地址,从不同的位置得到三个完全不同的结果。

和历史新闻页面一样,微信也有自动补充参数的机制。第一个地址是通过复制链接获得的,这似乎是一个伪装的代码。没用的。我们不要去想它。第二个地址是通过上一篇文章中介绍的方法从json文章历史消息列表中获得的链接地址,我们可以将这个地址保存在数据库中。之后,你可以通过这个地址从服务器获取文章内容。第三个链接补充参数后,目的是让文章页面中的阅读量js得到阅读量赞json结果添加的参数。在我们上一篇文章的方法中,由于文章页面是由客户端打开显示的,并且由于这些参数,文章页面中的js自动获取阅读量,所以我们可以通过代理服务获取这篇文章的阅读量。

本文内容是在本专栏前一篇文章介绍的方法基础上,详细研究如何获取文章内容和其他有用信息。

(保存在我的数据库中的文章列表,部分字段)

1、获取文章源代码:

文章源代码可以通过php函数file_get_content()读入变量。由于微信文章的源代码可以从浏览器打开,为了避免浪费页面空间,我就不贴在这里了。

?//$content_url变量是文章地址$ html=file _ get _ contents($ content _ URL);2.源代码中的有用信息:

1)原创内容:

原始内容包含在div id='js_content'/div标记中,该标记通过php代码获得:

?preg _ match _ all('/id=\ ' js _ content \ '(。*)脚本/iUs ',$html,$content,PREG _ PATTERN _ ORDER);$content='div id='js_content ' '。$ content[1][0];常规的开始识别div id='js_content ',结束识别script/iUs。匹配后,添加一个div id=' js _ content我的常规匹配水平有限,只能这样写。希望有专家能给我们一些更好的规则匹配方法的建议。

请注意,此匹配规则可能会在一段时间后发生变化。这篇文章将努力跟上时代。如果你按照我的文章做收藏系统,有一天失败了,别忘了回来看看文章有没有更新。

2)内容处理:

通过上面的方法,我们得到了文章内容的html,但是当你显示文章内容的时候,你会发现图片和视频无法正常显示。因为这个html仍然需要一些处理:

首先是图片,微信文章中img标签中的src属性全部替换为data-src属性。只有在显示时才会被替换。因此,我们也有两种方案:直接替换源代码,或者在显示时用js替换。我先介绍一下直接替换html的方法:

?/$content变量的值是文章内容html $ content=str _ replace(' data-src ',' src ',$ content);然后是视频。视频显示不正常。经过长期测试,发现可以通过替换一个页面地址来解决。过程不会说,结果会直接说:

?/$content变量的值是文章内容html $ content=str _ replace(' preview . html ',' player.html ',$ content);经过这两次替换,文章内容的html中的图片和视频都是正常的。

3)微信官方账号相关信息:

通过本专栏前一篇文章,我们介绍了我们使用微信客户端随意打开一个微信官方账号的历史消息页面。系统从数据库中识别biz的值,如果在数据库中找不到记录,则插入新记录。之后,收款队列会根据该业务定期获取该微信官方账号的历史消息列表。

然而,我们只拿到了微信官方账号的业务、微信官方账号的名称和头像,但我们仍然没有拿到。主要原因是历史消息页面没有这样的信息。但是我们可以从文章页面得到。

在微信文章页面的html底部,有一些js变量赋值代码。定期匹配后,我们可以得到这两个微信官方账号的信息:

?//$ HTML变量的值是all HTML preg _ match _ all ('/var昵称=\ '(。*?)\';/si ',$html,$ m);$昵称=$ m[1][0];//微信官方账号昵称preg _ match _ all(//var round _ head _ img=\ ')(。*?)\';/si ',$html,$ m);$ head _ img=$ m[1][0];//微信官方账号的头像?通过这两个常规匹配,我们可以得到微信官方账号的头像和昵称,根据文章地址中的biz保存在对应的微信号数据表中。

3.物品的保存和加工

前面的代码已经将文章的内容获取到变量中。事实上,每个人对如何保存它们可能都有自己的想法。让我在这里介绍一下我保存内容的方法:

将文章内容的html保存为html文件,数据库id作为文件名,biz字段作为目录。

?$dir='。/'.$商务。'/';$文件名=$目录。$id。html ';if(!is _ dir($ dir)){ mkdir($ cache _ dir);chmod($cache_dir,0777);}$file=fopen($filename,' w ');fwrite($file,$ content);fc lose($ file);上面的代码是一个标准的php代码,创建一个文件夹来保存文件,所以你可以根据你的实际情况来安排保存方法。

之后,我们可以在自己的服务器上获取一个html文件,这是微信官方账号的文章内容。我们可以从浏览器打开看看。这时,你可能会发现图片防盗链!无法正常显示!包括数据库里储存的文章封面图片,微信官方账号的头像都是防盗链。

别担心,这个问题很容易解决。你只需要把图片保存到自己的服务器上,以后会占用自己的服务器空间和带宽。

图片防盗链的原理是当网页上显示一张图片时,图片服务器会检测引用该图片的服务器域名,当发现该服务器域名不包含http://qq.com或http://qpic.cn时,会替换为一张防盗链图片。

但是如果没有检测到引用页面的域名,就会正常显示,所以我们可以通过php函数file_get_content()获取图片的二进制代码,然后按照自己的思路用一个文件名保存到自己的服务器上。在这里,我将介绍一种保存图片的方法。我用腾讯云的“万象优图”通过他们的api把图片保存到云托管。这样做的好处是,在阅读图片时,可以通过将所需的图片大小参数添加到图片的链接地址来直接获得缩略图。这比拥有自己的服务器方便多了。阿里巴巴云应该也有同样的产品,好像叫对象存储。

另外,我收集微信官方账号内容的目的是做一个新闻app。在app中显示html代码后,由于app也没有域名,防盗链服务器不会认为图片被盗。这样就可以直接显示图片了。

以上就是我总结的微信官方账号文章内容的收集和存储方法,希望对大家有所帮助。

版权声明:PHP编写微信微信官方账号文章页面收集方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。