飞污熊博客

静下心来做一件事

作为互联网基础设施中重要一环的DNS域名解析服务,在互联网中所承担的重要角色和发挥的重要作用。 Bind是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley分校开发和维护的, 全名为Berkeley Internet Name Domain,它是目前世界上使用最为广泛的DNS服务器软件。

本篇演示如何在CentOS 7上架设域名服务器,以及如何使用chroot牢笼机制插件来保障bind服务程序的可靠性, 并向大家演示如何在主服务器与从服务器之间部署TSIG密钥加密功能,来进一步保障迭代查询中数据的安全性。

阅读全文 »

CentOS 7继承了RHEL 7的新的特性,例如强大的systemd, 而systemd的使用也使得以往系统服务的/etc/init.d的启动脚本的方式就此改变, 也大幅提高了系统服务的运行效率。但服务的配置和以往也发生了极大的不同,同时变的简单而易用了许多。

CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统 system 和用户 user 之分, 即:/usr/lib/systemd/system/usr/lib/systemd/user

阅读全文 »

vim 是 Linux 系统上的最著名的文本/代码编辑器,也是早年的 Vi 编辑器的加强版, 而 gvim 则是其 Windows 版。它的最大特色是完全使用键盘命令进行编辑,脱离了鼠标操作虽然使得入门变得困难, 但上手之后键盘流的各种巧妙组合操作却能带来极为大幅的效率提升。

因此 vim 和现代的编辑器(如 Sublime Text)有着非常巨大的差异,而且入门学习曲线陡峭, 需要记住很多按键组合和命令,如今被看作是高手、Geek们专用的编辑器。尽管 vim 已经是古董级的软件, 但还是有无数新人迎着困难去学习使用,可见其经典与受欢迎程度。另外,由于 vim 的可配置性非常强, 各种插件、语法高亮配色方案等多不胜数,无论作为代码编辑器或是文稿撰写工具都非常给力。

阅读全文 »

python有时候简单起来连我自己都怕,有时候其他语言需要几十写出来的python几行搞定。 这里经常收集一些有趣的东西还是很好玩的。

阅读全文 »

前面我们介绍的都是去抓取静态的网站页面,也就是说我们打开某个链接,它的内容全部呈现出来。 但是如今的互联网大部分的web页面都是动态的,经常逛的网站例如京东、淘宝等,商品列表都是js,并有Ajax渲染, 下载某个链接得到的页面里面含有异步加载的内容,这样再使用之前的方式我们根本获取不到异步加载的这些网页内容。

使用Javascript渲染和处理网页是种非常常见的做法,如何处理一个大量使用Javascript的页面是Scrapy爬虫开发中一个常见的问题, 这篇文章将说明如何在Scrapy爬虫中使用scrapy-splash来处理页面中得Javascript。

阅读全文 »

有时候爬取网站的时候需要登录,在Scrapy中可以通过模拟登录保存cookie后再去爬取相应的页面。这里我通过登录github然后爬取自己的issue列表来演示下整个原理。

要想实现登录就需要表单提交,先通过浏览器访问github的登录页面https://github.com/login,然后使用浏览器调试工具来得到登录时需要提交什么东西。 我这里使用chrome浏览器的调试工具,F12打开后选择Network,并将Preserve log勾上。我故意输入错误的用户名和密码,得到它提交的form表单参数还有POST提交的UR 去查看html源码会发现表单里面有个隐藏的authenticity_token值,这个是需要先获取然后跟用户名和密码一起提交的。

阅读全文 »

有很多时候我们需要从多个网站爬取所需要的数据,比如我们想爬取多个网站的新闻,将其存储到数据库同一个表中。我们是不是要对每个网站都得去定义一个Spider类呢? 其实不需要,我们可以通过维护一个规则配置表或者一个规则配置文件来动态增加或修改爬取规则,然后程序代码不需要更改就能实现多个网站爬取。

要这样做,我们就不能再使用前面的scrapy crawl test这种命令了,我们需要使用编程的方式运行Scrapy spider,参考官方文档

阅读全文 »

本篇主要介绍两种部署爬虫的方案。如果仅仅在开发调试的时候在本地部署跑起来是很容易的,不过要是生产环境,爬虫任务量大,并且持续时间长,那么还是建议使用专业的部署方法。主要是两种方案:

阅读全文 »

Scrapy为我们提供了可重用的item pipelines为某个特定的Item去下载文件。 通常来说你会选择使用Files Pipeline或Images Pipeline。

这两个管道都实现了:

  • 避免重复下载
  • 可以指定下载后保存的地方(文件系统目录中,Amazon S3中)
阅读全文 »

Scrapy使用Python内置的的日志系统来记录事件日志。

日志配置

1
2
3
4
5
6
7
LOG_ENABLED = true
LOG_ENCODING = "utf-8"
LOG_LEVEL = logging.INFO
LOG_FILE = "log/spider.log"
LOG_STDOUT = True
LOG_FORMAT = "%(asctime)s [%(name)s] %(levelname)s: %(message)s"
LOG_DATEFORMAT = "%Y-%m-%d %H:%M:%S"
阅读全文 »