最原始的 Scrapy 项目是只能将爬虫部署到单机上,如果要实现分布式爬虫就需要手动去维护一个待抓取的列表,那么 scrapy-redis 项目就是这样一个存在。
特性:
分布式抓取,可以部署多个 spider 实例,共享同一个 redis 队列
分布式后处理,抓取的内容会放到一个队列中,这样就意味可以开启足够多的实例来处理结果
提供了即插即用的组件,包括定时,去重,等等
Scrapy 的局限
Scrapy 已经能够满足大部分爬虫的需要,但是有一些场景 Scrapy 并不适用。
对于页面数量比较少的站点,并不需要 Scrap
Read more ...
VMware Workstation 12 虚拟机,适用于 RHEL/CentOS 7, Fedora 20-24, Debian 7-9, Ubuntu 16.04-14.14 and Linux Mint 17-18.
Prerequisites
确保系统 64 位
VMware 12 不支持 32 位 CPU
确保有 root 权限
安装
更新
apt-get update && apt-get upgrade # On Debian Systems
下载
wget 'http://www.vmwa
Read more ...
在学习 Flask 时接触 flask-rq2,然后知道了 python-rq 因为之前使用过 Celery ,所以对 python-rq 倒也没有多大的困惑。因为 python-rq 只依赖于 redis,相较于 Celery 轻量很多,如果在 Flask 中不需要非常繁重的后台任务队列(比如只有发送注册邮件任务)可以考虑使用 python-rq,毕竟有 flask-rq2 为 Flask 度身定做,结合 Flask 要比 Celery 容易很多。
RQ (Redis Queue) is a simple Python library for
Read more ...
tcpdump 是一个运行在命令行下的抓包工具,如果想知道网络中有什么在流通,那么 tcpdump 就是一个很好的工具。它允许用户拦截和显示发送或收到过程中网络连接到该计算机的 TCP/IP 和其他数据包。tcpdump 适用于大多数的类 Unix 系统操作系统(如 Linux,BSD 等)。类 Unix 系统的 tcpdump 需要使用 libpcap 这个捕捉数据的库就像 Windows 下的 WinPcap。
tcpdump 可以识别的协议有:
ARP
RARP
ICMP
TCP
UDP
IP
IPv6
App
Read more ...
Scrapy 是纯 Python 实现的爬虫框架(scraping and crawling framework),可以非常轻松地提取网页结构信息。最初设计时 Scrapy 仅仅作为网页抓取工具,但因其功能强大,配置简单,逐渐的被扩大使用范围,也经常被用于以下方面:
数据挖掘 Data Mining
信息处理 information processing
历史信息存储 historical archival
检测及自动化测试 monitoring and automated testing
因为网上的教程已经非常详细了,这里就重点
Read more ...
记录一下使用过程,留备以后使用。
pyenv 是 Python 版本管理工具。 pyenv 可以改变全局的 Python 版本,在系统中安装多个版本的 Python, 设置目录级别的 Python 版本,还能创建和管理 virtual python environments 。所有的设置都是用户级别的操作,不需要 sudo 命令。
pyenv 的一个典型使用场景就是,比如一个老项目需要使用 Python 2.x ,而另一个新项目需要 Python 3.x 。而 virtualenv 主要是用来管理相同版本 Python 不同项目的包的依赖不同的问题,
Read more ...
Redis 是典型的 KV 数据库,通常所说的 Redis 数据结构指的是 Value 的数据结构,常用的数据结构有 String, Hash, List, Set, Sorted Set. 前三种类型不用多讲,几乎每种语言都存在,后两种 set 是单纯的集合, Sorted Set 是有序集合,在集合内可以根据 score 进行排序。Redis 的命令不区分大小写,但通常情况下使用大写以示区分。
几个常用网址:
https://redis.io/commands
https://redis.io/documentation
中文命令
Read more ...
Redis (Remote Dictionary Server) 是由 Salvatore Sanfilippo(antirez) 开发的开源数据库,基于内存的 Key-Value 类型的 NoSQL 。目前在 DB Engines Ranking K-V 数据库中排行第一 1。
Redis 是 REmote DIctionary Server 远程字典服务的缩写,他以字典结构存储数据,并允许其他应用通过 TCP 协议来读写字典中的内容。
Redis 支持很多的特性:
所有数据存放在内存中
支持数据持久化:AOF 和 RDB 两种类型
Read more ...
之前也介绍过 di disk information,不过系统默认不带,需要自己安装,如果遇到没有权限安装时,就可以使用 df 来查看当前机器剩余磁盘空间。
df 全称 disk filesystem,用于显示 Linux 系统磁盘利用率,通常也用来查看磁盘占用空间。
命令格式
df [OPTIONS] [FILE]
直接使用不加任何参数会显示所有当前被挂载的文件系统的可用空间。默认会以 1KB 为单位显示。
选项:
-a 全部文件系统列表
-h 方便阅读方式显示
-H 等于“-h”,但是计算式,1K=1000
Read more ...
Celery 简单来说就是一个分布式[[消息队列]]。简单、灵活且可靠,能够处理大量消息,它是一个专注于实时处理的任务队列,同时也支持异步任务调度。Celery 不仅可以单机运行,也能够同时在多台机器上运行,甚至可以跨数据中心。
Celery 中比较关键的概念:
worker: worker 是一个独立的进程,任务执行单元,它持续监视队列中是否有需要处理的任务;
broker: broker 消息传输中间件,任务调度队列,接收生产者发出的消息,将任务存入队列,broker 负责协调客户端和 worker 的沟通。客户端向队列添加消息,bro
Read more ...