python分布式爬虫–房天下

  • 2020 年 1 月 20 日
  • 笔记

第一步安装redis

redis在windows系统中的安装与启动:

  1. 下载:redis官方是不支持windows操作系统的。但是微软的开源部门将redis移植到了windows上。因此下载地址不是在redis官网上。而是在github上:https://github.com/MicrosoftArchive/redis/releases。
  2. 安装:点击一顿下一步安装就可以了。
  3. 运行:进入到redis安装所在的路径然后执行redis-server.exe redis.windows.conf就可以运行了。
  4. 连接:redismysql以及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,第二种方式采用编程语言,比如PythonPHPJAVA等。

  1. 使用redis-cliredis进行字符串操作:
  2. 启动redis: sudo service redis-server start
  3. 连接上redis-server: redis-cli -h [ip] -p [端口]
  4. 添加: set key value 如: set username xiaotuo 将字符串值value关联到key。如果key已经持有其他值,set命令就覆写旧值,无视其类型。并且默认的过期时间是永久,即永远不会过期。
  5. 删除: del key 如: del username
  6. 设置过期时间: expire key timeout(单位为秒) 也可以在设置值的时候,一同指定过期时间: set key value EX timeout 或: setex key timeout value
  7. 查看过期时间: ttl key 如: ttl username
  8. 查看当前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