月度归档:2016年05月

Lofter图片搬家

图片已经能够下载了,很好~但是缺一步,那就是把文章中的图片链接换成本地连接。当然不能手动了,用PYTHON来做这件事。

代码大概是这样的。


我的想法是,把所有图片链接全部换成是very9s/lofter/*.png的链接形式。好在图片不是很多。到时候在服务器上就直接在根目录下放个lofter文件夹吧。
看,图片链接已经改了。
/////////////////////////////////////////////////////////////////////////////////////

嗯,搬家差不多可以进行了。现在只要再在一些个别的细节做一些调整就可以了。整体框架已完成。

Python下载Lofter图片

现在文章已经能够迁移到Hexo了。但是文章里面的图片链接依旧是LOFTER上的,所以也要把图片搬出来。

1-下载图片

在原来的程序基础上添加下载图片的代码。

很直接,很单纯。。。直接用urlopen然后write。可是才下载一张就被服务器无情地拒绝了。

2-伪装

我就这么裸奔的跑过去,当然被拒绝了。

查找python的官方文档,发现一句话。解决办法就在这里了。

headers should be a dictionary, and will be treated as if add_header() was called with each key and value as arguments. This is often used to “spoof” the User-Agent header, which is used by a browser to identify itself – some HTTP servers only allow requests coming from common browsers as opposed to scripts. For example, Mozilla Firefox may identify itself as “Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11”, while urllib‘s default user agent string is “Python-urllib/2.6” (on Python 2.6).

——

《urllib.request》

所以我要伪装成浏览器。所以修改代码:

通过添加header来实现


3-大功告成

终于可以快速的下载图片了。图片搬家问题也解决了一大半了。


oh~对了,关于解析博文,由于XML中保持的是HTML数据,所以博文中图片的链接,我是用Beautiful Soup 4.2.0来解析的。

下一步,就是修改XML文件,把博文中的图片链接换成自己的图片链接。

嗯~剩下的下次再来吧。

Lofter搬家Hexo前期工作

搬家的工作,慢慢进行着。不知不觉搬家的主体实验已经做了一大半了。基本上验证了搬家方案的可行性。目前已经成功实验搬到自己的centos7虚拟机上。

1-python编程

文章那么多,手动搬家时不可能的了。所以我用python编程,帮我解析Lofter的XML文件,自动生成文章。


目前只是实验性,功能没有完全达到目标。还有实现将Lofter文章中的图片下载到本地上。否则出现这种情况:

生成的文章


2-PSCP上传

用PSCP上传到虚拟机服务器上


嗯,在虚拟机上怎么乱码了?无所谓了,反正文件名也无关紧要
3-Hexo重新生成
访问服务器,发现确实多了多篇文章,但是没有全。只有几篇。还有文章出现乱码。
4-Hexo文章乱码解决

配置 _config.yml


重新生成。。。。。
啊哟,出错了?什么情况?找了有一段时间。原来,官方文档有说冒号之后要有空格。

重新修改配置 _config.yml

重新生成。。。。。


OK没问题。可是乱码的问题还是存在。再看文章编码,原理是文章编码的问题。

于是修改python程序,用UTF-8编码方式保存文章


于是,乱码问题解决了。 5-解决文章不全问题

文章不全是因为中文的文件名,虚拟机无法识别。所以把文件名都改成数字就可以读取所有文章了。

OK了,这些全部都能显示了

////////////////////////////////////////////////////////////////

嗯,差不多了。有时间再补全其他功能吧。

解决XML error Input is not prope

为了搬家,打算用Python写一个解释LOFTER XML的程序,出现如下错误


这说明XML有问题。因为如果XML有错,解释器就会不工作 W3C如是说

果不其然,放到chrome解释,就报错

This page contains the following errors:

error on line 840 at column 23: Input is not proper UTF-8, indicate encoding !Bytes: 0x0B 0xE5 0x8C 0x85

Below is a rendering of the page up to the first error.


查了下XML文件,840行23位置是CDATA区段,CDATA语法也没有问题呀。
网上搜下相关资料。一个帖子引起了我的注意: Invalid Character inside CDATA ,该帖子好像是说CDATA里面的文本并不是任何字符都可以的。如果超出UTF-8的字符集就会出错。英文太烂了,看不太懂。。。

而且有意思的是,这个帖子是14年前的。真有历史感

//////////////////////////////////////////////////////////////////////////

这说明不是语法问题,而是CDATA里面的内容有问题。

果真,在CDATA段里面,发现了2个不知道是什么的符号


把他们删了。现在就没有问题了。
python可以愉快的进行了。


这是搬家的一个小插曲。解决了小问题,却很开心。还有今天论文自己查重过了。paperpass浪费了4次,后知后觉的发现其实它根本就不准。直接交给学校去知网查吧。

Centos7搭建Hexo全过程

在搭建好Nginx后,安装Hexo过程相比就简单很多了。完全跟着官网教程来。

1-安装Git

yum install git-core

2-安装Node.js
安装Node.js的最简单方式是用 nvm

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash


然后就是按照Node.js

nvm install 4

3-安装Hexo

最后一步npm install -g hexo-cli


4-建站

现在一切都准备好了,可以开始建站了。

$ hexo init <folder>


$ cd <folder>

$ npm install

最后的最后就是生成网页了

然后就是把pulic下的网页复制到Nginx的网站root目录下。默认是/usr/share/nginx/html/

再然后就可以访问了。

Centos 安装Nginx全过程

1-首先安装CentOS 7 EPEL repository

yum install epel-release


2-然后就可以简单的安装Nginx了

yum install nginx


3-运行Nginx

systemctl start nginx


测试下服务
原来是防火墙没有设置 4-设置防火墙

firewall-cmd –permanent –zone=public –add-service=http


重启防火墙

firewall-cmd –reload

再试试


5-开机自动启动Nginx

systemctl enable nginx

6-更新nginx

nginx -v查看下当前的版本,发现是Legacy versions

所以就有必要更新下。

官方文档是这么说的:

所以按部就班

最后更新nginx

yum update nginx


看,已经升级为最新的nginx了

/etc/group文件格式说明

今晚折腾在centos搭建nginx。在看group的时候发现文档的格式看不懂,于是get到新知识了。

///////////////////////////////////////////////////////////////////////////

1–Understanding /etc/group File

首先group是用来存储描述组信息的文件。

Users can be either people (meaning accounts tied to physical users) or accounts which exist for specific applications to use.用户可以是人,也可以是为某些特殊应用而设立的。

Groups are logical expressions of organization, tying users together for a common purpose. Users within a group can read, write, or execute files owned by that group.组则是将一些有相同需求的用户联系在一起。

——

Chapter 33. Users and Groups

2–/etc/group格式说明

group有四部分,每部分用分号:分割。

四个部分分别是:

  1. group_name: It is the name of group. If you run ls -l command, you will see this name printed in the group field.
  2. Password: Generally password is not used, hence it is empty/blank. It can store encrypted password. This is useful to implement privileged groups.
  3. Group ID (GID): Each user must be assigned a group ID. You can see this number in your /etc/passwd file.
  4. Group List: It is a list of user names of users who are members of the group. The user names, must be separated by commas.

======================================

查看某用户所在的组:$groups username