使用scrapy爬取图片,自己处理下载和使用scrapy处理下载

news/2024/7/19 9:44:43 标签: python, 爬虫

  自己处理下载时不需要设置item.py,pipelines.py等这些文件,这些文件保持默认便可,只需要自己用css也好,xpath也好,获取到图片链接之后,使用常规的图片下载方法,下载图片即可,像下面这样:

python">        try:
            os.makedirs(root_path)
        except FileExistsError:
            pass
        r = requests.get(img_url, headers=headers)
        with open(root_path + img_name, 'wb') as f:
            f.write(r.content)

  就不多讲了,下面讲使用scrapy处理图片下载,下面的内容都是在你已经正确获取到了图片链接的前提下。

  

  首先,编写item.py文件:

class ImagesItem(scrapy.Item):
    file_name = scrapy.Field()
    img_urls = scrapy.Field()

  上面的file_name为文件保存路径,img_urls为图片下载的链接。

  然后爬虫主文件中实例化item:

python">        item = ImagesItem()
        item['file_name'] = root_path + img_name
        item['img_urls'] = img_url
        yield item

  接着就是处理下载的pipelines.py文件了:

class ImagePipeline(ImagesPipeline):
    def get_media_requests(self, item, info):
        for img_url in item['img_urls']:
            yield Request(img_url, meta={'name': item['file_name']})

    def file_path(self, request, response=None, info=None):
        filename = request.meta['name']
        return filename

  之后就是在setting.py中启用ImagePipeline了:

IMAGES_STORE = 'D:\\'

ITEM_PIPELINES = {
   'images.pipelines.ImagePipeline': 300,
}

  注意这里的IMAGE_STORE是下载路径,会和上面的filename进行拼接,请确认自己设置的IMAGE_STORE和filename拼接出来的路径正确,如果没有意外,到这里运行爬虫之后已经可以正常爬取图片到设定的文件夹了。

转载于:https://www.cnblogs.com/sirfers/p/10918371.html


http://www.niftyadmin.cn/n/1048126.html

相关文章

Program type already present:okio.AsyncTimeout$Watchdog Message{kind=ERROR, text=Program type :okio

在app中的build.gradle中加入如下代码, configurations {all*.exclude group: com.google.code.gsonall*.exclude group: com.squareup.okhttp3all*.exclude group: com.squareup.okioall*.exclude group: com.android.support,module:support-v13 } 如图 转载于:ht…

第6组-17通信工程3班-156 黄子羡 网络抓包分析

一、地址规划表 源ip地址 目的ip地址 备注 192.168.43.156 221.130.200.202 360搜索导航 192.168.43.156 183.232.136.130 YY直播平台 二、网络配置 打开“控制面板”→选择“网络和Internet”→选择“网络和共享中心”→选择已连接的WLAN→选择“属性”→打开“Intern…

php 字符串函数 教程_php字符串函数 str类常见用法示例

本文实例讲述了php字符串函数 str类常见用法。分享给大家供大家参考,具体如下:str_split(string, leg);//将一个字符 串转换为数组,参数1:要被转换的字符串,参数2:每 段长度, 返回一个转换后的数组例:$str …

CodeForces 1047C Enlarge GCD(数论)题解

题意&#xff1a;n个数的gcd是k&#xff0c;要你删掉最少的数使得删完后的数组的gcd > k 思路&#xff1a;先求出k&#xff0c;然后每个数除以k。然后找出出现次数最多的质因数即可。 代码&#xff1a; #include<cmath> #include<set> #include<map> #inc…

字符编码和文件操作

一、字符编码 1、什么是字符编码&#xff1f; 人类能识别的是字符等高级标识符&#xff0c;电脑只能识别0,1组成的标识符&#xff0c;要完成人与机器之间的信息交流&#xff0c; 一定需要一个媒介&#xff0c;进行两种标识符的转化(两种标识符的对应关系) 2、编码…

php模拟登录cookies,PHP读取CURL模拟登录时生成Cookie文件的方法

本文实例讲述了PHP读取CURL模拟登录时生成Cookie文件的方法。分享给大家供大家参考。具体实现方法如下&#xff1a;在使用PHP中的CURL模拟登录时会保存一个Cookie文件,例如下面的代码$login_url XXX;$post_fields[email] XXXX;$post_fields[password] XXXX;$post_fields[ori…

SyntaxError: missing ) after argument list

消息 语法错误: 参数列表后面缺少 ) 错误类型 SyntaxError. 什么地方出错了? 有一个函数在调用时出现错误。这可能是一个错误&#xff0c;丢失运算符或者转义字符等。 示例 因为没有使用 ”“ 操作符来连接字符串&#xff0c;JavaScript 认为 log 函数的参数的值只是 “PI: ”…

一道字符串变量对比值是否相等题

网友的详细解答如下&#xff1a; 对于这道题&#xff0c;考察的是对String类型的认识以及编译器优化。Java中String不是基本类型&#xff0c;但是有些时候和基本类型差不多&#xff0c;如String b "tao"; 可以对变量直接赋值&#xff0c;而不用 new 一个对象&#…