个人网站首页搭建记录

简单记录下网站首页的搭建过程。

背景

自从网站域名备案成功下来,一直以来都没想好首页应该怎么写。其实不是没想好,而是没有准备好首页的多张大背景图片应该存放在那,毕竟是最廉价的云服务器,应该本着勤俭持家的理念,能省就省嘛。不过还好, bing中文搜索官网的背景图片每天都会更新,于是萌生出了用nodejs爬别人图片的方法~

环境准备

首先,需要给服务器安装nodejs,centOS下通过yum install nodejs方式安装的nodejs是0.10版本的,根本无法写es6代码。没办法,只能通过源码安装了

wget http://nodejs.org/dist/v4.5.0/node-v4.5.0.tar.gz
tar -zxvf node-v4.5.0.tar.gz
cd node-v4.5.0
./configure
make
make install

ps:过程中如果报找不到g++编译器,则请先安装g++yum install gcc-c++
输入node -v检验是否安装成功
这里再顺便提一下安装npm的方法吧:
curl https://npmjs.com/install.sh | sudo sh
输入npm -v检验是否安装成功

爬图片

咳咳,接下来说到重点了,准备爬cn.bing.com网站的背景图片。

第一步

进入bing中文网址,cmd+alt+i打开开发者工具选项,Network选项,cmd+r刷新网页,找到网站的背景图片Ajax选项,这就是我们要找的Ajax请求url
个人网站首页搭建记录
返回的结果如下所示
个人网站首页搭建记录

第二步

github上有很多开源的nodeje抓包库,如superagent
而这次我所使用的是nodejs原生api
http.get(url, (res)=>{}): get请求
https.get(url, (res)=>{}): https方式
ps: 其实上面两种都是http(s).request(options, (res)=>{})的GET方式简化版,只是因为当前大部分网站都是GET请求方式。
通过上面的图片,我们此处使用http.get():

const http = require('http');
const ajaxUrl = 'http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1';
http.get(ajaxUrl, (res) => {
    res.on('data', (d) => {
        console.log(d)
    })
})

此处终端的打印出来的是buffer对象,所以我们需要将其转为字符串,然后转为json对象取到需要的图片url,代码如下:

const json = JSON.parse(d.toString());
const src = json.images[0].url;

上面中的src就是我们需要的图片url地址。

第三步

通过以上方式,虽然我们获取到了目标图片的url,但如何把它应用到首页还是个问题。
本人采取的方法是通过nodejs启动一个服务,返回目标字符串background-image:url(' + src + '),首页通过ajax请求之后添加到body的style对象上。
查看效果: https://qingguoing.com:3000
等等,有个坑,首页是通过nginx跑在80端口,而nodejs服务是跑在3000端口,于是就涉及到ajax跨域的问题。解决方法也很简单,nodejs设置返回头Access-Control-Allow-Origin: *。所以nodejs最终代码如下所示:

const https = require('https');
const http = require('http');
const fs = require('fs');
const options = {
        key: fs.readFileSync('./ssl/privkey1.pem'),
        cert: fs.readFileSync('./ssl/fullchain1.pem')
};

const ajaxUrl = 'http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1';

https.createServer(options, function(request, response) {
        response.writeHead(200, {
                'Content-Type': 'text/html',
                'Access-Control-Allow-Origin': 'https://qingguoing.com'
        });
        http.get(ajaxUrl, (res) => {
                res.on('data', (d) => {
                        const json = JSON.parse(d.toString());
                        const url = json.images[0].url;
                        response.write('background-image:url('+ url +')');
                        response.end();
                })
        })
}).listen(3000);
console.log('server is listening on the port 3000');

ps1: 个人网站采用的是https链接,ssl证书是通过 letsencrypt免费生成。
ps2: ajax跨域头只设置了个人网站的首页,所以大家如果想按我这种穷屌丝方式爬去图片,还是去爬微软大厂的吧。既然都看到这了,相信对您来说,这些都是小菜一碟

最后

最后当然就是运行node程序了。不过如果你像我一样,通过终端命令远程连接到服务器端,那么你应该按照如下方式执行node命令:
node app.js&
此时开启的服务是后台跑起的,直接退出并不会终止已跑起的node程序

原文链接: https://www.cnblogs.com/qingguo/p/5819871.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    个人网站首页搭建记录

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/239694

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
adminadmin
0 0
bzero, memset ,setmem 区别【转】
上一篇 2023年2月13日 下午8:06
写一个CGI程序并运行
下一篇 2023年2月13日 下午8:07

相关推荐

  • 指向类成员的指针并非指针 2023年2月9日
  • 无损网络和有损网络 2023年4月26日
  • C++软件开发常用辅助软件——SCons 2023年3月2日
  • vue项目搭建与pycharm启动vue 2023年3月2日
  • xcode编译出错:Undefined symbols for architecture armv7 2023年2月13日
  • DFS(深度优先搜索) 2023年2月12日
  • 12.8K

    我是职场上失宠的妃子

  • C++性能真的不如C吗?

    7.1K
  • 大话数据结构 高清PDF

    6.7K
  • string底层实现之SSO

    6.3K
  • 千百撸

    4.4K
  • GDB调试-从入门实践到原理

    3.7K
  • 什么是COM

    3.7K
  • std::string底层实现之COW(Copy-On-Write)

    3.6K
  • 智能指针-使用、避坑和实现

    3.6K
  • 彻底搞通TCP send和recv原理

    3.4K

PHP网站源码大芬模板网站建设松岗网站推广大浪阿里店铺托管布吉外贸网站建设西乡网站改版荷坳百姓网标王推广平湖网站建设龙华网站推广方案荷坳关键词按天计费大鹏网络推广爱联seo南联设计网站南山网站推广系统西乡百搜词包民治企业网站改版福田百度网站优化排名盐田优化福田百搜词包南山模板推广大浪关键词按天收费同乐seo网站推广木棉湾SEO按效果付费横岗网站优化排名福永网络营销平湖网站排名优化大运外贸网站建设坪山网站推广方案横岗网站定制永湖关键词排名包年推广坑梓网页设计歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化