我的网站首页发布了三张图,分别是当年收益率、投资组合、历史净值,其中的数据每10分钟自动更新。

实现方法是:

1、googlesheet用脚本抓取实时行情数据

2、googlesheet用脚本定时刷新

3、googlesheet中的指定图表发布到网络

4、服务器定时抓取发布的图片为本地图片

5、wordpress侧边栏小组件加载本地图片

这个过程里有几个问题,一环套一环的。

因为有墙,国内不能直接访问googlesheet发布的图片,所以我把图片先抓到境外服务器上,然后这个服务器是国内可以访问的,那么就能免翻墙了。(其实后来我又尝试过另一种免翻墙访问google发布内容的方式,就是用国外免费的cdn加速服务,加速googlesheet发布的地址,这样也实现了免翻墙,而且可以互动式查看googlesheet内容,比图片效果更好。但是,实际使用下来,速度明显不如直接抓图来得快,而且cdn分配的服务器速度可能不稳定,遂放弃这一方案。)

为了能自动更新图片,所以在服务器上设置了计划任务,每10分钟执行一个sh文件,抓取googlesheet发布的图片到本地。

抓图用wget,wget googlesheet的发布地址 -O 本地地址

这里又有个问题,googlesheet发布的地址很长,还包含?等的特殊符号,wget抓取会出错,后来发现把googlesheet的发布地址先转成短链接,可以解决这个问题。

(今天似乎是提供短链接服务的网站出了问题,然后抓的图就出错了,抓到的可能是几年前设置短链接时候,首次获取的图片。然后我现在是换了一个免费的短链接服务网站。以后可能本地自己架设一个更可靠。)

后来又发现,wget到本地的文件,有时候会是0字节,可能是网络卡了还是什么原因,所以后来每个图抓两遍。

抓到图,显示在博客侧边栏很容易,但如果是本地静态图片文件,浏览器会进行缓存,需要加个时间戳可以解决。

加时间戳的话,博客默认的小工具不行,于是安装一个支持php脚本的插件XYZ PHP,可以在编写脚本,然后在侧边栏插入。

前面说到的每个图抓两遍,显示的时候进行判断,这个也在php脚本里实现。正常显示a,如果a是0字节就显示b,如果b是0字节就显示a,如果a和b都是0字节,那就算了,让它显示出错吧。

侧边栏插入“目前持仓”图片的php代码如下,其他两个类似。

<?php
$StrA='<img src=’;
$StrAX='<a href=’;
$StrC= substr(md5(time()), 0, 4);
$StrD=’ /></a>’;
$StrDX=’ >’;
$StrB4=’https://retire50blog.wang/wp-content/uploads/xlzc.png?’;

$StrB4BK4=’https://retire50blog.wang/wp-content/uploads/xlzcbk.png?’;
$StrP4 = $StrA.$StrB4.$StrC. $StrD;
$StrP4X=$StrAX.$StrB4.$StrC. $StrDX;
$StrP4XXX= $StrP4X. $StrP4;

$StrP4BK4 = $StrA.$StrB4BK4.$StrC. $StrD;
$StrP4BK4X = $StrAX.$StrB4BK4.$StrC. $StrDX;
$StrP4BK4XXX=$StrP4BK4X.$StrP4BK4;

$url4=’./wp-content/uploads/xlzc.png’;
$url44=’./wp-content/uploads/xlzcbk.png’;

if (filesize($url4)<>0){
if(filesize($url44)<>0){
echo $StrP4XXX;
}
}
if (filesize($url4)==0){
echo $StrP4BK4XXX;
}
if(filesize($url44)==0){
echo $StrP4XXX;
}
?>

注意filesize函数输入的是本地地址,输入完整网址返回是空。

有回复请通知我
提醒

2 评论
内联反馈
查看所有评论
羽度非凡
6 月 之前

厉害了,没想到博主还是技术流

匿名
4 月 之前

不是技术流。完蛋了难怪30岁自己还赚不到钱