前言
想要让网站稳定发展,优质的文章是必不可少的,那我们没有好文章怎么办,我们可以Ctrl C来借(ban)鉴(zhuan)文章,但是这效率还是不够快,这时候我们就需要来采集文章了,下面给大家介绍一下我的思路。
思路
首先,一般的网站都会有Feed Rss地址,这是一个xml文件,功能我个人感觉和sitemap差不多,但是多了文章的链接的标题,所以说我们可以利用解析rss来达到我们实现采集文章的目的。
第一版代码
这里我们推荐使用simplexml来解析xml,别问我为什么,因为我用别的代码都失败了,下面这个代码我们采集成功了。但是file_get_contents这个函数是不支持https的,所以说我们只能开启OpenSSL拓展或者换用curl函数
代码语言:javascript复制$result = file_get_contents("http://www.moleft.cn/feed/");
$rss = simplexml_load_string($result);
$int = 0;
foreach ($rss->channel->item as $v) {
$json[$int]['title'] = json_decode(json_encode($v->title), true)[0];
$json[$int]['content'] = base64_encode($v->children('content', true)->encoded);
$int ;
}
exit(json_encode($json));
第二版代码
以为我要换curl函数了?怎么可能,我就是改拓展累死,安装拓展麻烦死,卸载php,也不会用curl函数的。解决https的问题很简单,只要关掉https校验就可以了,于是拿某布好的博客做一下小白鼠。
代码语言:javascript复制<?php
$config = [
"ssl" => [
"verify_peer" => false,
"verify_peer_name" => false,
],
];
$result = file_get_contents("https://dwd.moe/feed/",false,stream_context_create($config));
$rss = simplexml_load_string($result);
$int = 0;
foreach ($rss->channel->item as $v) {
$json[$int]['title'] = json_decode(json_encode($v->title), true)[0];
$json[$int]['content'] = base64_encode($v->children('content', true)->encoded);
$int ;
}
exit(json_encode($json));
结果还是失败,所以说我又去开启了OpenSSL拓展,然后用第一版代码,不加stream_context_create($config)也成功采集到了,开心的我屁颠颠的去拿某aide教程网试水,结果报错。显示状态码是403,我用接口调试的结果是200,右键查看源码也是可以获取到的,太坑了不用了,换curl去了。
不知名的网友 :说好的卸载php也不用呢 MoLeft :大家不要理他,他是杠精 不知名的网友 :......
第三版代码
换用了curl之后管他typecho还是WordPress,统统拿下。然后我说明一点,很多人好奇我为什么要把文章内容base64加密,因为这个文章内容含有html代码放在json里面会有可怕的现象发生。废话不多说上代码,curl函数别的文章里面有,我就不贴了
代码语言:javascript复制$result = get_curl("http://www.moleft.cn/feed/");
$rss = simplexml_load_string($result);
$int = 0;
foreach ($rss->channel->item as $v) {
$json[$int]['title'] = json_decode(json_encode($v->title), true)[0];
$json[$int]['content'] = base64_encode($v->children('content', true)->encoded);
$int ;
}
exit(json_encode($json));
结尾
用这个代码,就可以把rss订阅转化成json的形式,方便入库,我只获取了tilte和content两个字段,别的字段可以根据自己的需要来添加。 欧耶~又水了一篇文章
如无特殊说明《php采集之效率最高的方法》为博主MoLeft原创,转载请注明原文链接为:https://moleft.cn/post-24.html