Scrapy爬取妹子图保存到不同目录下

进行设置settings

#启动图片管道
ITEM_PIPELINES = {
   ‘mztu.pipelines.ImagesPipelinse‘: 300,
}
#设置默认目录地址  注意下载图片的话默认地址必须设置!!!
IMAGES_STORE = "E:\study\Python\scrapy\mztu\imges"
#设置图片通道失效时间
IMAGES_EXPIRES =90
#缩略图生成
#IMAGES_THUMBS = {
 #   ‘small‘: (50, 50),
#    ‘big‘: (270, 270),
#}

spider目录

# -*- coding: utf-8 -*-
import scrapy
from mztu.items import MztuItem

class ZimdgSpider(scrapy.Spider):
    name = ‘zimdg‘
    allowed_domains = [‘mzitu.com‘]
    #生成链接列表
    start_urls = [‘http://www.mzitu.com/xinggan/page/{}/‘.format(str(x)) for x in range(118)]
    def parse(self, response):
        #解析出链接
        set_li = response.xpath("//div[@class=‘postlist‘]/ul/li")
        for ecth in set_li:
            ed = ecth.xpath(‘./a/@href‘).extract()
            #进行二次分类解析
            yield scrapy.Request(ed[0],callback=self.parse_item)

    def parse_item(self,response):
        itme = MztuItem()
        # 获取页数链接进行访问
        offset = int(response.xpath(‘//div[@class="pagenavi"]/a/span/text()‘)[4].extract())
        #生成链接访问
        #遍历链接访问
        for i in [response.url+"/{}".format(str(x))  for x in range(1,offset+1)]:
            itme[‘Referer‘]=i
            #将meta传入链接
            yield scrapy.Request(itme[‘Referer‘],meta={‘meta_1‘:itme}, callback=self.parse_ponse)
        # for i in url:

    def parse_ponse(self,response):
        #获取itme资源
        itme = response.meta[‘meta_1‘]
        #获取图片地址
        imgs = response.xpath(‘//div[@class="main-image"]/p/a/img/@src‘)[0].extract()
        #获取图片目录
        title = response.xpath(‘//div[@class="main-image"]/p/a/img/@alt‘)[0].extract()
        itme["title"]= title
        itme["imge_url"]= imgs
        #itme["nickname"] = itme["Referer"][itme["Referer"].rfind("/"):]+itme["imge_url"][itme["imge_url"].rfind(‘/‘)+1:itme["imge_url"].rfind(‘.‘)]
        #itme["nickname"] = itme["imge_url"][itme["imge_url"].rfind(‘/‘)+1:itme["imge_url"].rfind(‘.‘)]
        yield itme

items

import scrapy

class MztuItem(scrapy.Item):
    #目录
    title = scrapy.Field()
    #图片地址
    imge_url = scrapy.Field()
    #请求头
    Referer = scrapy.Field()

    image_Path = scrapy.Field()
    #图片名称
   # nickname = scrapy.Field()

pipelines管道

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

# Define your item pipelines here
#
# Don‘t forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html
# 导入这个包为了移动文件
import shutil
#此包不解释
import scrapy
# 导入项目设置
from scrapy.utils.project import get_project_settings
# 导入scrapy框架的图片下载类
from scrapy.pipelines.images import ImagesPipeline
#此包不解释
import os

class ImagesPipelinse(ImagesPipeline):
    #def process_item(self, item, spider):
    #    return item
    # 获取settings文件里设置的变量值
    IMAGES_STORE = get_project_settings().get("IMAGES_STORE")
    # 重写ImagesPipeline类的此方法
    # 发送图片下载请求
    def get_media_requests(self, item, info):
        image_url = item["imge_url"]
        #headers是请求头主要是防反爬虫
        yield scrapy.Request(image_url,headers={‘Referer‘:item[‘Referer‘]})

    def item_completed(self, result, item, info):
        image_path = [x["path"] for ok, x in result if ok]
        # 定义分类保存的路径
        img_path = "%s\%s" % (self.IMAGES_STORE, item[‘title‘])
        # 目录不存在则创建目录
        if os.path.exists(img_path) == False:
            os.mkdir(img_path)
        # 将文件从默认下路路径移动到指定路径下
        shutil.move(self.IMAGES_STORE + "\\" +image_path[0], img_path + "\\" +image_path[0][image_path[0].find("full\\")+6:])
        item[‘image_Path‘] = img_path + "\\" + image_path[0][image_path[0].find("full\\")+6:]
        return item

这里实现图片保存到不同的目录下,主要函数是shutil.move(),将图片从原始默认路径移动到指定目录下

原文地址:https://www.cnblogs.com/contiune/p/9384973.html

时间: 2024-10-08 01:14:25

Scrapy爬取妹子图保存到不同目录下的相关文章

scrapy爬取斗图表情

用scrapy爬取斗图表情,其实呀,我是运用别人的博客写的,里面的东西改了改就好了,推存链接" http://www.cnblogs.com/jiaoyu121/p/6992587.html " 首先建立项目:scrapy startproject doutu 在scrapy框架里先写自己要爬取的是什么,在item里面写. import scrapyclass DoutuItem(scrapy.Item): # define the fields for your item here

04 爬取妹子图最热图片

参考链接:https://github.com/wzyonggege/Mzitu-Crawler/blob/master/mzitu.py 项目地址: copywang/spiders_collection 实验功能 爬取 http://www.mzitu.com/hot/ 的文章图片 先请求http://www.mzitu.com/hot/ 首页 分析首页HTML代码,用正则表达式获取一共有多少后翻页数,后续的url格式是http://www.mzitu.com/hot/页码 在"http:/

Python - 爬取博客园某一目录下的随笔 - 保存为docx

1 #coding:utf-8 2 import requests 3 from bs4 import BeautifulSoup 4 import MySQLdb 5 6 7 def get_html(url): 8 ''' 9 获取页面HTML源码,并返回 10 ''' 11 html = requests.get(url) 12 content = html.text.encode('utf-8') 13 return content 14 15 def get_blog_html_lis

Python 2.7_爬取妹子图网站单页测试图片_20170114

1.url= http://www.mzitu.com/74100/x,2为1到23的值 2.用到模块 os 创建文件目录; re模块正则匹配目录名 图片下载地址; time模块 限制下载时间;requests模块获取网页源代码;urllib模块 urllib.urlretrieve(图片url,保存的带扩展名的文件名x.jpg)方法下载图片 3.知识点 文件目录处理  函数封装调用 全局变量 4.代码 #coding:utf-8 import os import re import reque

spider_爬取斗图啦所有表情包(图片保存)

"""爬取斗图吧里面的所有表情包 知识点总结: 一.使用requests库进行爬取,随机请求头(网站反爬措施少.挂个请求头足矣) 二.具体思路: 1.先爬取所有的图片url,放在列表里 2.循环遍历url请求这些图片, 3.将图片进行分类保存三.分类保存用到一个知识点,endwith(以***结尾) 使用这个函数,将jpg,gif,png等不同类型的图片分开四.演示案例中,只爬取了前20页.五.各个定义的数字变量意思为: n=1 网页页数 num=1 保存图片数 注:该案例主

Scrapy爬取美女图片 (原创)

有半个月没有更新了,最近确实有点忙.先是华为的比赛,接着实验室又有项目,然后又学习了一些新的知识,所以没有更新文章.为了表达我的歉意,我给大家来一波福利... 今天咱们说的是爬虫框架.之前我使用python爬取慕课网的视频,是根据爬虫的机制,自己手工定制的,感觉没有那么高大上,所以我最近玩了玩 python中强大的爬虫框架Scrapy. Scrapy是一个用 Python 写的 Crawler Framework ,简单轻巧,并且非常方便.Scrapy 使用 Twisted 这个异步网络库来处理

Scrapy爬取美女图片续集 (原创)

上一篇咱们讲解了Scrapy的工作机制和如何使用Scrapy爬取美女图片,而今天接着讲解Scrapy爬取美女图片,不过采取了不同的方式和代码实现,对Scrapy的功能进行更深入的运用. 在学习Scrapy官方文档的过程中,发现Scrapy自身实现了图片和文件的下载功能,不需要咱们之前自己实现图片的下载(不过原理都一样). 在官方文档中,我们可以看到下面一些话:Scrapy为下载item中包含的文件(比如在爬取到产品时,同时也想保存对应的图片)提供了一个可重用的 item pipelines .

scrapy爬取网易新闻内容

最近在写毕业论文,是做个文本分类相关的题目.想抓取网易新闻里那些新闻内容作为分析的数据,于是就又照着scrapy的文档照做了一遍... 感觉主要就只是两个文件items.py和spiders文件夹下的爬取规则的文件,我这里爬取技术类文档的直接叫tech.py了 scrapy的入门教程已经写的很详细了,大家可以先看看.地址为http://scrapy-chs.readthedocs.org/zh_CN/0.24/intro/tutorial.html 下面是我做的情况 1.创建项目    运行命令

【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http://www.xiaohuar.com/,让你体验爬取校花的成就感. Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. Scrapy吸引人的地方在于它是一个框架,任何人都可