scrapy+selenium爬取UC头条网站

Scrapy是Python优秀的爬虫框架,selenium是非常好用的自动化WEB测试工具,两者结合可以非常容易对动态网页进行爬虫。
本文的需求是抓取UC头条各个板块的内容。UC头条(https://news.uc.cn/ )网站没有提供搜索入口,只能每个板块的首页向下滚动鼠标加载更多。要对这样的网站进行检索,抓取其内容,采用一般的scrapy请求方式,每次只能获取最新的10条数据,分析其JS请求,发现参数过于复杂,没有规律。如果想获取更多数据,则需要采用模拟浏览器的方法,这时候selenium就派上用场了。

Read more
nginx日志分析

1,日志定义

在nginx.conf中定义的日志格式如下:

1
2
3
4
5
6
7
8
http {
...

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status [$request_body] $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
...
}
Read more
docker命令手册

Docker 命令操作手册,方便查询使用。

运行

docker run

–name 指定容器名
-p 指定端口映射

Read more
Docker镜像自动构建

基于Git的代码版本控制,能保证每个开发人员的开发成果得到有效的保护,不会发生因为其他人的“误操作”操作将自己辛辛苦苦写的代码删除,而且能够跟踪每一次的改动,能快速回滚到之前任一版本。
基于Docker镜像的版本控制,能保证应用服务的正常迭代更新,某一版本出问题了可以快速切换至其他镜像版本。

Read more
2017腾讯云+未来峰会

云时代的新趋势 马化腾

Read more
docker私有仓库搭建

Docker提供了开放的中央仓库dockerhub,同时也允许我们使用registry搭建本地私有仓库。搭建私有仓库有如下的优点:

  1. 节省网络带宽,提升Docker部署速度,不用每个镜像从DockerHub上去下载,只需从私有仓库下载就可;
  2. 私有镜像,包含公司敏感信息,不方便公开对外,只在公司内部使用。
Read more
scrapy+splash 爬取动态网站(JS)

scrapy只支持静态网页的抓取,通过scrapy-splash,能实现对JavaScript的解析。

Read more
Docker版highcharts中文导出服务器

highcharts的导出服务器使用固然方便,但需要把数据上传到它的服务器,对于数据安全性的考虑和外网访问限制的场景,搭建自己的导出服务器是比较可靠的。highcharts提供了一套搭建导出服务器的方法,本文在这个基础上将导出服务器封装成一个Docker容器,并且实现了图片中文字体的支持。

1,基于centos官方镜像

1
docker pull centos

2,启动容器并进入

1
docker run -it --name=hcharts -p 3002:80 -v /Users/Download:/home centos bash

3,安装phantomjs

由于phantomjs的tar.bz2在centos容器中解压失败,我们采用在宿主机中下载并解压好,通过-v链接到容器中。
在宿主机中下载最新版的phamtomjs,解压到/Users/Download/。在容器的/home目录下就能看到宿主机的解压文件。

设置PATH路径:

1
2
[root@bfdb9f8adaf6 my_fonts]# export PHANTOMJS_HOME = /PATH/phantomjs-2.1.1
[root@bfdb9f8adaf6 my_fonts]# export PATH = $PATH:$PHANTOMJS_HOME/bin

请在下面相对应的linux版本 运行以下命令

1
2
3
4
5
# ubuntu
sudo apt-get install libfontconfig

# centos
yum install libXext libXrender fontconfig libfontconfig.so.1

输出下面的版本信息即安装成功

1
2
# phantomjs --version
2.1.1

4,安装node.js

1
2
curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
yum -y install nodejs

参考:https://nodejs.org/en/download/package-manager/

5,安装highcharts导出模块

1
2
3
4
5
6
# 淘宝[npm镜像](http://npm.taobao.org/):
npm config set registry https://registry.npm.taobao.org
// 全局安装导出模块
npm install highcharts-export-server -g
// 安装完毕后检查是否安装成功
highcharts-export-server

6,中文字体的支持

a,复制中文字体到容器

将windows的fonts目录下拷贝simkai.ttf、simsun.ttc、simhei.ttf,通过-v上传到容器/home目录下。
在容器的usr/share/fonts目录下新建my_fonts,

1
2
3
4
5
$ cd /usr/share/fonts
$ mkdir myfonts
$ mv /home/simkai.ttf ./myfonts
$ mv /home/simsun.ttc ./myfonts
$ mv /home/simhei.ttf ./myfonts

b,生成字体索引

在myfonts目录下执行 mkfontscale,执行成功后执行下面命令:fc-list :lang=zh,输出有信息即安装成功!

1
2
3
4
5
[root@bfdb9f8adaf6 my_fonts]# fc-list :lang=zh
/usr/share/fonts/my_fonts/simsun.ttc: NSimSun,新宋体:style=Regular
/usr/share/fonts/my_fonts/simhei.ttf: SimHei,黑体:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
/usr/share/fonts/my_fonts/simkai.ttf: KaiTi,楷体:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
/usr/share/fonts/my_fonts/simsun.ttc: SimSun,宋体:style=Regular

7,测试

1
curl -H "Content-Type: application/json" -X POST -d '{"infile":{"title": {"text": "中文测试"}, "xAxis": {"categories": ["Jan", "Feb", "Mar"]}, "series": [{"data": [29.9, 71.5, 106.4]}]}}' 127.0.0.1:3002 -o mychart.png

得到图片:

8,从Docker仓库获取

本教程中的镜像已上传至docker官方仓库, 链接,按照说明pull即可。

1
docker run -d --name=hcharts0.2 --restart=always -p 3003:3000 cbbing/hcharts highcharts-export-server --enableServer 1 --port 3000

参考:

1,Linux下导出服务器缺少字体中文乱码问题解决办法

2,搭建导出服务器


docker版私人网盘ownCloud

ownCloud是一个自由且开源的个人云存储解决方案。ownCloud在客户端可通过网页界面,或者安装专用的客户端软件来使用。网页界面当然就是任何能开网页的平台都支持,而客户端软件也支持相当多平台,Windows、Linux、iOS、Android皆有。
除了云存储之外,ownCloud也可用于同步日历、电子邮件联系人、网页浏览器的书签;此外还有多人在线文件同步协作的功能(类似google documents或Duddle等等)。
ownCloud官方提供了Docker版的ownCloud,部署安装能一步到位。

Read more
docker版Django

Django的运行是基于python的环境,加上django包。在docker中运行django,实现方式是从docker下载python镜像,然后安装django运行所依赖的包。

https://store.docker.com/images/python?tab=description 中介绍pull镜像方式有一种叫python:onbuild。
这种镜像创建方式根据项目中提供的requirements.txt文件自动pip安装依赖包。大多数情况,通过python:onbuild能创建一个满足工程所需的独立镜像。

Read more