zoukankan      html  css  js  c++  java
  • scrapy 爬取图片 最基本操作

    使用scrapy里自带的Image功能下载,下面贴代码,解释在代码的注释里。

    items.py

    1 import scrapy
    2 
    3 class ImageItem(scrapy.Item):
    4     #注意这里的item是ImageItem

    5 image_urls = scrapy.Field() 6 images = scrapy.Field() 7 8 #image_urls和images是固定的,不能改名字

    settings.py

     1 USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'
     2 #上面只是个访问header,加个降低被拒绝的保险
     3 
     4 ITEM_PIPELINES = {
     5     'scrapy.pipelines.images.ImagesPipeline': 1
     6 }
     7 #打开Images的通道
     8 
     9 IMAGES_STORE = 'F:\pics'
    10 #一定要设置这个存储地址,要是真实的硬盘,可以不创建pics文件夹,会自己生成,还生成默认的full文件夹

     spider.py(这里是carhome) 

     1 import scrapy
     2 
     3 from car.items import ImageItem
     4 
     5 class CarhomeSpider(scrapy.Spider):
     6     name = 'carhome'
     7     allowed_domains = ['sohu.com']
     8     start_urls = ['http://www.sohu.com/a/337634404_100032610']
     9     download_delay = 1
    10 
    11     def parse(self, response):
    12         item = ImageItem()
    13         srcs = response.css('.article img::attr(src)').extract() #用css方法找到的所有图片地址
    14         item['image_urls'] = srcs
    15         yield item

    pipelines.py 

     1 from scrapy.pipelines.images import ImagesPipeline
     2 from scrapy.exceptions import DropItem
     3 from scrapy.http import Request
     4 #这里的两个函数get_media_requests和item_completed都是scrapy的内置函数,想重命名的就这这里操作
     5 #可以直接复制这里的代码就可以用了
     6 class MyImagesPipeline(ImagesPipeline) :
     7     def get_media_requests(self, item, info) :
     8         for image_url in item['image_urls'] :
     9             yield Request(image_url)
    10 
    11     def item_completed(self, results, item, info) :
    12         image_path = [x['path'] for ok, x in results if ok]
    13         if not image_path :
    14             raise DropItem('Item contains no images')
    15         item['image_paths'] = image_path
    16         return item

     代码就这么多,下面执行一下:

     文件夹结果:

     还不会的快去试试吧!

     
  • 相关阅读:
    保护【大数据】应用的步骤和工具
    提高UI设计效率的4个技巧
    你学会UI设计了吗?
    Android 零散知识点整理
    PHP面试和PHP开发者都应掌握的10个问题
    MySQL 中如何存储 emoji ?
    想在网上保持匿名?教你用Linux如何实现!
    数据库入门之运行原始 SQL 查找
    PHP之取得当前时间函数方法
    【在线】使用在线软件来完成任务
  • 原文地址:https://www.cnblogs.com/passagain/p/11449178.html
Copyright © 2011-2022 走看看