专栏首页钟志远的专栏Python操作Redis - 云爬虫初探
原创

Python操作Redis - 云爬虫初探

云存储Redis(Cloud Redis Store)是腾讯云打造的兼容Redis协议的缓存和存储服务,提供主从版和集群版。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。

购买请注意:
由于不同云产品之间的内网不互通,请一定购买与你之前的云服务器在相同地区的云存储Redis,否则会无法访问。

当你使用Python写分布式爬虫的时候就需要使用Redis了,今天这篇文章就让我们走进分布式爬虫的世界。

第一步你可以先在 https://www.qcloud.com/product/crs 页面购买云存储Redis,可以继续使用之前的实名认证的优惠券;如果你是学生你可以进行学生认证,会有更多优惠。

购买完成之后访问:https://console.qcloud.com/redis 页面,在此页面需要自己配置初始化密码。如下图,第一条为刚购买未初始化密码的,只需要点击初始化密码并设计密码即可,第二条为已经初始化完成的。现在我们就可以通过IP,以及你刚刚设置的密码进行访问了。同时请记住你的实例的内网地址,这就是你下面连接此实例时候使用的IP,这里我的第二条已经初始化好的实例的地址端口是:10.66.161.215:6379

因为我们需要做爬虫,需要使用Python操作Redis,需要我们自己去了解其中的原理吗?不需要,Python中有这样的一个库:redis,只需要在我们之前配置好的腾讯云服务器上执行命令:pip install redis

显示Successfully installed redis则表示安装成功了,下面我们先做一些测试。说一个坑:腾讯云用Python连接云存储的时候密码不是你创建该实例的时候的密码,真实的密码格式为:实例ID:你自己设置的密码

import requests
import re
import time
from redis import Redis
headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36' }

def push_redis_list():
    r = Redis(host='10.66.149.8',port=6379,password='')
    for i in range(100):
        num = 5100+i;
        url ='http://www.meizitu.com/a/'+ str(num) +'.html'
        img_url = requests.get(url,timeout=30)
        #print img_url.text
        #time.sleep(10)
        img_url_list = re.findall('http://mm.howkuai.com/wp-content/uploads/201.*.jpg',img_url.text)
        print(img_url_list)
        for temp_img_url in img_url_list:
            l = len(re.findall('limg',temp_img_url))
            #print l
            if(l == 0):
                print("url: ",temp_img_url)
                r.lpush('meizitu',temp_img_url)
        print(r.llen('meizitu'))
    return 0

def get_big_img_url():
    r = Redis(host='10.66.149.8',port=6379,password='')
    while(1):
        try:
            url = r.lpop('meizitu')
            download(url)
            time.sleep(1)
            print(url)
        except:
            print("请求求发送失败重试")
            time.sleep(10)
            continue
    return 0

def download(url):
    try:
        r = requests.get(url,headers=headers,timeout = 50)
        name = int(time.time())
        f = open('./pic/'+str(name)+'.jpg','wb')
        f.write(r.content)
        f.close()
    except Exception as e:
        print(Exception,":",e)

if __name__ == '__main__':
    url = 'http://www.meizitu.com/a/list_1_'
    print("begin")
    push_redis_list()#开启则加任务队列
    #get_big_img_url()#开启则运行爬取任务

这段代码用来下载美图网上100个页面的所有的图片,我们的思路是先把100个页面上的所有的图片url存储到redis上面。就上面的代码中push_redis_list函数所实现的。

接着,我们用两台云服务器同时连接redis执行get_big_img_url函数,第二台服务器的配置请参照前面的两篇配置文章。

之后你将会在你的脚本的目录下的一个pic文件夹里面看到下载的美图。

相关推荐

云服务器搭建Python环境

云服务器搭建Python爬虫环境

腾讯云主机Python3环境安装Scrapy爬虫框架过程及常见错误

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 遍历bilibili网站视频信息

    在以上两篇文章中我们已经在腾讯云服务器上搭建好了Python爬虫环境了,下一步就是在云服务器上爬上我们的爬虫,抓取我们想要的数据:【腾讯云的1001种玩法】云服...

    钟志远
  • 【腾讯云的1001种玩法】云服务器搭建Python环境

    之前一直在用阿里云服务器跑爬虫、小脚本。这两天在朋友的安利下转到了腾讯云上面来,刚好趁这个机会写一写有关于云服务器上Python爬虫环境的搭建。

    钟志远
  • 【腾讯云的1001种玩法】云服务器搭建Python爬虫环境

    在上一篇文章中,我们已经学会了在云服务器上搭建Python环境了,假设你已经在云服务器上搭建好了Python环境,我们将进入下一步:搭建Python爬虫环境。

    钟志远
  • python 重定向获取真实url

    py3study
  • Python3实现PoC——wooyun

    py3study
  • Python 利用Python编写简单网络爬虫实例2

    获取目标网站“http://www.51testing.com/html/index.html”中特定url,通过分析发现,目标url同其它url的关系如下

    授客
  • Android车轮之网络数据读取框架OkHttp

    AlicFeng
  • 一个实用的测试技巧

    张树臣
  • 如何用R语言从网上读取多样格式数据

    生活中,我们面临着各种各样的数据:比如你的成绩单,比如公司的财务报表,比如朋友圈的一些状态,比如微信里的一段语音……我们生活的大数据时代的一个重要特征便是数据的...

    机器学习AI算法工程
  • 通过编写python函数来一步步打造属于自己得渗透模块[提升工作效率]

    日常工作中,难免我们会重复工作,这里就需要我们去写好一些相关的模块,然后等需要用的时候,直接调用自己写的包即可,这样可以节省自己大量的时间用来研究漏洞或者刷朋友...

    徐焱

扫码关注云+社区

领取腾讯云代金券