龙行博客

龙行博客,致力于个人经验分享源码分享,随笔文章
现在位置:首页 > 编程语言 > Python > Scrapy利用Spider爬取douyu颜值美女

Scrapy利用Spider爬取douyu颜值美女

龙行    Python    2018-11-19    75    0评论    本文已被百度收录点击查看详情

1、创建Scrapy项目

scrapy startproject douyu
2.进入项目目录,使用命令genspider创建Spider

scrapy genspider douyumeinv "capi.douyucdn.cn"
3、定义要抓取的数据(处理items.py文件)

# -*- coding: utf-8 -*-

import scrapy

class DouyuItem(scrapy.Item):
    name = scrapy.Field()  # 存储照片的名字
    imagesUrls = scrapy.Field()  # 照片的url路径
    imagesPath = scrapy.Field()  # 照片保存在本地的路径
4、编写提取item数据的Spider(在spiders文件夹下:douyumeinv.py)

# -*- coding: utf-8 -*-
import scrapy
import json
# 如果下面在pycharm中有红色波浪线,参照这个设置:https://blog.csdn.net/z564359805/article/details/80650843
from douyu.items import DouyuItem
class DouyumeinvSpider(scrapy.Spider):
    name = 'douyumeinv'
    allowed_domains = ['capi.douyucdn.cn']
    offset = 0
    url = "http://capi.douyucdn.cn/api/v1/getVerticalRoom?limit=20&offset="
    start_urls = [url + str(offset)]
    def parse(self, response):
        data = json.loads(response.text)['data']
        for each in data:
            item = DouyuItem()
            item['name'] = each['nickname']
            item['imagesUrls'] = each['vertical_src']
            yield item
        self.offset += 20
        yield scrapy.Request(self.url + str(self.offset),callback=self.parse)
5.处理pipelines管道文件保存数据,可将结果保存到文件中(pipelines.py)

# -*- coding: utf-8 -*-
import scrapy
import os
from scrapy.utils.project import get_project_settings
from scrapy.pipelines.images import ImagesPipeline
# 继承ImagesPipeline()的子类处理图片并保存,参考:https://blog.csdn.net/z564359805/article/details/80693578
class ImagePipeline(ImagesPipeline):
    # 获取settings文件中设置的图片保存地址IMAGES_STORE
    IMAGES_STORE =get_project_settings().get("IMAGES_STORE")
    def get_media_requests(self, item, info):
        image_url = item['imagesUrls']
        yield scrapy.Request(image_url)
    def item_completed(self, results, item, info):
        image_path = [x['path'] for ok, x in results if ok]
        os.rename(self.IMAGES_STORE + '/' + image_path[0],self.IMAGES_STORE + '/' + item['name'] + '.jpg')
        item['imagesPath'] = self.IMAGES_STORE + '/' + item['name']
        return item
6.配置settings文件(settings.py)

ROBOTSTXT_OBEY = False     
# Override the default request headers:添加User-Agent信息   
DEFAULT_REQUEST_HEADERS = {
  'USER_AGENT':'DYZB/2.290 (iPhone; iOS 9.3.4; Scale/2.00)',
}
# 图片保存地址,这样会在当前执行的目录下创建images文件夹,也可以写具体地址 
IMAGES_STORE = "./images" 
# Configure item pipelines 
ITEM_PIPELINES = { 
  'douyu.pipelines.ImagePipeline': 300,
} 
# 还可以将日志存到本地文件中(可选添加设置) 
LOG_FILE = "douyulog.log" 
LOG_LEVEL = "DEBUG" 
设置完毕,进行爬取:执行项目命令crawl,启动Spider:

scrapy crawl douyumeinv

评论一下 分享本文 赞助站长

赞助站长X

扫码赞助站长
联系站长
龙行博客
  • 版权申明:此文如未标注转载均为本站原创,自由转载请表明出处《龙行博客》。
  • 本文网址:https://www.liaotaoo.cn/98.html
  • 上篇文章:思维导图XMind8 Update8 破解一键安装版超级好用
  • 下篇文章:tp5 ajax 使用formdata提交数据(包括文件上传)
  • python3
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论
快捷导航
联系博主
在线壁纸
给我留言
光羽影视
音乐欣赏
返回顶部