python分布式爬虫–房天下
- 2020 年 1 月 20 日
- 笔记
第一步安装redis
redis在windows系统中的安装与启动:
- 下载:redis官方是不支持windows操作系统的。但是微软的开源部门将redis移植到了windows上。因此下载地址不是在redis官网上。而是在github上:https://github.com/MicrosoftArchive/redis/releases。
- 安装:点击一顿下一步安装就可以了。
- 运行:进入到
redis
安装所在的路径然后执行redis-server.exe redis.windows.conf
就可以运行了。 - 连接:
redis
和mysql
以及mongo
是一样的,都提供了一个客户端进行连接。输入命令redis-cli
(前提是redis安装路径已经加入到环境变量中了)就可以连接到redis
服务器了。
其他机器访问本机redis服务器:
想要让其他机器访问本机的redis服务器。那么要修改redis.conf的配置文件,将bind改成bind [自己的ip地址或者0.0.0.0]
,其他机器才能访问。 注意:bind绑定的是本机网卡的ip地址,而不是想让其他机器连接的ip地址。如果有多块网卡,那么可以绑定多个网卡的ip地址。如果绑定到额是0.0.0.0,那么意味着其他机器可以通过本机所有的ip地址进行访问。
对redis
的操作
对redis
的操作可以用两种方式,第一种方式采用redis-cli
,第二种方式采用编程语言,比如Python
、PHP
和JAVA
等。
- 使用
redis-cli
对redis
进行字符串操作: - 启动
redis
: sudo service redis-server start - 连接上
redis-server
: redis-cli -h [ip] -p [端口] - 添加: set key value 如: set username xiaotuo 将字符串值
value
关联到key
。如果key
已经持有其他值,set
命令就覆写旧值,无视其类型。并且默认的过期时间是永久,即永远不会过期。 - 删除: del key 如: del username
- 设置过期时间: expire key timeout(单位为秒) 也可以在设置值的时候,一同指定过期时间: set key value EX timeout 或: setex key timeout value
- 查看过期时间: ttl key 如: ttl username
- 查看当前
redis
中的所有key
: keys *
第二步创建项目
第三步设置settings.py文件
在middlewares.py文件添加以下内容
# -*- coding: utf-8 -*- # Define here the models for your spider middleware # # See documentation in: # http://doc.scrapy.org/en/latest/topics/spider-middleware.html import random class UserAgentDownloadMiddleware(object): # user-agent随机请求头中间件 USER_AGENTS = [ 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;', 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv,2.0.1) Gecko/20100101 Firefox/4.0.1', 'Mozilla/5.0 (Windows NT 6.1; rv,2.0.1) Gecko/20100101 Firefox/4.0.1' ] def process_request(self,request,spider): user_agent = random.choice(self.USER_AGENTS) request.headers['User-Agent'] = user_agent