手把手教你用Scrapy 爬取斗鱼妹子头像 下载图片

1 篇文章 0 订阅
1 篇文章 0 订阅

项目展示:

项目结构:

Tree

成果:

result


1.新建项目

  • 确保安装了所用到的库 scrapy image Pillow
pip install scrapy
pip install image
pip install Pillow



######################注释###########################(不要粘贴)
pip工具下载
最好在(virtualvenv)里进行安装,便于包的管理,需要了解的可以去百度一下
  • 创建一个scrapy目录
scrapy startproject douyu



######################注释###########################(不要粘贴)
这是scrapy提供的一个便捷目录框架
'douyu' 可以自定义 这里我用的是'douyu' 你也可以用其他的
cd到你指定的目录下 键入这个命令 便会多出一个'douyu'文件夹
  • 了解一些爬虫的命令
scrapy list

scrapy crawl douyu


######################注释###########################(不要粘贴)
scrapy list 可以展示出目前可执行的蜘蛛

scrapy crawl douyu 'douyu'是我们蜘蛛的名字,蜘蛛的名字并不是文件的名字那么在哪里取呢?我们在后面可以看到

2.项目内容

  • 我会列出项目我改变的文件和备注上注释
  • 首先在文件夹的items.py中我们新定义一个属于自己的item
import scrapy


class DouyuItem(scrapy.Item):
    # 存放图片的url
    image_urls = scrapy.Field()
    # 存放图片的路径结果
    images = scrapy.Field()
  • settings.py中配置我们的蜘蛛(比如说存放路径啊,图片的URL来源,和管道之类)
# 添加以下内容在settings.py


ITEM_PIPELINES = {
    # 这句话直接复制,设置我们图片管道的优先级
    'scrapy.pipelines.images.ImagesPipeline': 300
}
# 存放图片的路径,要修改成自己电脑下的路径
IMAGES_STORE = '/Users/admin/Desktop/images'
# 图片URL的来源,和我们之前Item的属性统一,个人理解为获取到每个item里面的属性作为url 蜘蛛开始自动请求
IMAGES_URLS_FIELD = 'image_urls'
# 图片的存放路径结果,在url下载成功后保存的位置,也和我们的Item的属性统一
IMAGES_RESULT_FIELD = 'images'
# 保存图片的延迟天数/避免重复下载
IMAGES_EXPIRES = 30
  • 在我们新建的文件夹里面的spider文件(自带了__init__.py),我们新建一个douyu.py

# 用来解析我们请求成功返回的json格式文件
import json
import scrapy
# 我们的Item(存放自己需要的类似一个字典)
from douyu.items import DouyuItem


class DouyuSpider(scrapy.Spider):
    # 这个就是蜘蛛的名字了,也就是我们scrapy list 和 scraply crwal douyu的来由
    name = 'douyu'
    # 允许的范围
    allowed_domains = ['douyucdn.cn', ]

    # 偏移量
    offset = 0
    # 手机端获取信息的json的URL,里面可以返回limit=20(20条数据),从第offset= 开始
    base_url = 'http://capi.douyucdn.cn/api/v1/getVerticalRoom?limit=20&offset='
    # 拼接我们的url
    start_urls = [base_url + str(offset), ]

    # 回调函数 解析数据
    def parse(self, response):
        content = response.text
        data = json.loads(content)['data']

        for i in data:
            # json格式字段里面的key对应的值
            image_url = i['vertical_src']
            # 我们先前定义的Item
            item = DouyuItem()

            # 该字段必须是可迭代对象
            item['image_urls'] = [image_url]
            yield item

        # 这里是可以设置想要获取的多少条,230可改,代表获取230张图片,可以自行设置
        # if self.offset < 230:
        #     self.offset += 20
        #     yield scrapy.Request(url=self.base_url + str(self.offset), callback=self.parse)

3.执行项目

  • 进入到我们的爬虫目录,也就是开始startproject 甚至的目录,我这里是douyu1
  • 结果如下图

1


附上源码连接GitHub源码链接

有疑问的可以评论或者联系我

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值