鱼C论坛

 找回密码
 立即注册
查看: 2217|回复: 1

scrapy

[复制链接]
发表于 2023-2-25 22:23:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 哈岁NB 于 2023-2-25 22:25 编辑

tu.py
  1. import scrapy

  2. from ..items import DeepimgproItem
  3. class ImgSpider(scrapy.Spider):
  4.     name = 'img'
  5.     # allowed_domains = ['www.xxx.com']
  6.     start_urls = ['https://pic.netbian.com/4kmeinv/']

  7.     def parse(self, response):
  8.         #解析出了图片的名称和详情页的url
  9.         li_list = response.xpath('//*[@id="main"]/div[3]/ul/li')
  10.         for li in li_list:
  11.             title = li.xpath('./a/b/text()').extract_first() + '.jpg'
  12.             detail_url = 'https://pic.netbian.com'+li.xpath('./a/@href').extract_first()
  13.             item = DeepimgproItem()
  14.             item['title'] = title
  15.             #需要对详情页的url发起请求,在详情页中获取图片的下载链接
  16.             yield scrapy.Request(url=detail_url,callback=self.detail_parse,meta={'item':item})

  17.     #解析详情页的数据
  18.     def detail_parse(self,response):
  19.         meta = response.meta
  20.         item = meta['item']
  21.         img_src = 'https://pic.netbian.com'+response.xpath('//*[@id="img"]/img/@src').extract_first()
  22.         item['img_src'] = img_src

  23.         yield item
复制代码


管道类
  1. # Define your item pipelines here
  2. #
  3. # Don't forget to add your pipeline to the ITEM_PIPELINES setting
  4. # See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html


  5. # useful for handling different item types with a single interface
  6. import scrapy
  7. from itemadapter import ItemAdapter

  8. from scrapy.pipelines.images import ImagesPipeline
  9. class DeepimgproPipeline(ImagesPipeline):
  10.     # def process_item(self, item, spider):
  11.     #     return item
  12.     def get_media_requests(self, item, info):
  13.         img_src = item['img_src']
  14.         #请求传参,将item中的图片名称传递给file_path方法
  15.         #meta会将自身传递给file_path
  16.         print(item['title'],'保存下载成功!')
  17.         yield scrapy.Request(url=img_src,meta={'title':item['title']})
  18.     def file_path(self, request, response=None, info=None, *, item=None):
  19.         #返回图片的名称
  20.         #接收请求传参过来的数据
  21.         title = request.meta['title']
  22.         return title
  23.     def item_completed(self, results, item, info):
  24.         return item
复制代码

大佬们,上面这个为什么爬到的是大图,下面却是缩略图
tu.py
  1. import scrapy
  2. from ..items import TupianItem

  3. class TuSpider(scrapy.Spider):
  4.     name = 'tu'
  5.     #allowed_domains = ['www.xxx.com']
  6.     start_urls = ['https://pic.netbian.com/4kmeinv/']

  7.     def parse(self, response):
  8.         li_list = response.xpath('//*[@id="main"]/div[3]/ul/li')
  9.         for li in li_list:
  10.             img_src = "https://pic.netbian.com" + li.xpath('.//img/@src').extract_first()

  11.             item = TupianItem()
  12.             item['src'] = img_src

  13.             yield item
复制代码


   
管道类
  1. # Define your item pipelines here
  2. #
  3. # Don't forget to add your pipeline to the ITEM_PIPELINES setting
  4. # See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html
  5. import scrapy
  6. # useful for handling different item types with a single interface
  7. from itemadapter import ItemAdapter

  8. from scrapy.pipelines.images import ImagesPipeline
  9. class mediaPileline(ImagesPipeline):

  10.     #重写三个方法
  11.     #获取图片数据
  12.     def get_media_requests(self, item, info):
  13.         img_src = item['src']
  14.         print(img_src)
  15.         yield scrapy.Request(img_src)
  16.     #指定图片存储路径(只需返回图片名称)
  17.     def file_path(self, request, response=None, info=None, *, item=None):
  18.         imgName = request.url.split('/')[-1]
  19.         print(imgName,'保存成功')
  20.         return imgName
  21.     def item_completed(self, results, item, info):
  22.         return item
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-2-26 20:14:59 | 显示全部楼层
解决了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-24 22:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表