加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

scrapy 爬取图片 最基本操作

发布时间:2020-12-20 10:49:29 所属栏目:Python 来源:网络整理
导读:使用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是固

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

?

items.py

1 import scrapy
2 
3 class ImageItem(scrapy.Item):
4     #注意这里的item是ImageItem5     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,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

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

?

?文件夹结果:

?

?还不会的快去试试吧!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读