鱼C论坛

 找回密码
 立即注册
查看: 3620|回复: 23

[已解决]scrapy

[复制链接]
发表于 2023-2-13 09:44:14 | 显示全部楼层 |阅读模式

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

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

x
大佬们,为什么这个程序没有报错,但最后却没有保存下图片,请求帮忙看一看
爬虫文件
import scrapy
from ..items import TupianItem

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

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

            yield item

items文件
import scrapy


class TupianItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    src = scrapy.Field()

pipelines文件
import scrapy

from itemadapter import ItemAdapter

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

    #重写三个方法
    def get_media_requests(self, item, info):

        img_src = item['src']
        print(img_src)
        yield scrapy.Request(img_src)
    def file_path(self, request, response=None, info=None, *, item=None):
        imgName = request.url.split('/')[-1]
        print(imgName,'保存成功')
        return imgName
    def item_completed(self, results, item, info):
        return item
最佳答案
2023-2-13 16:56:23
哈岁NB 发表于 2023-2-13 16:54
那视频和音频也需要安装别的吗

不用,只是 ImagesPipeline 有转换图片大小和格式所以需要用到 Pillow 这个库

本帖被以下淘专辑推荐:

  • · scrapy|主题: 4, 订阅: 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-13 10:36:56 | 显示全部楼层
本帖最后由 isdkz 于 2023-2-13 10:46 编辑

配置文件 settings.py 里面关键的三个配置设置了没有?

第一(启用 pipeline):

ITEM_PIPELINES = {
   "test0.pipelines.mediaPileline": 300                # test0 换成你的爬虫项目名
}

第二(设置图片存储路径):

IMAGES_STORE = './images'                          

第三(禁用 robots 君子协议,这个看情况加,因为有一些网站没有在 robots.txt 中对图片的爬取进行限制):

ROBOTSTXT_OBEY = False
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-13 13:04:04 | 显示全部楼层
isdkz 发表于 2023-2-13 10:36
配置文件 settings.py 里面关键的三个配置设置了没有?

第一(启用 pipeline):

启用了
屏幕截图(19).png
屏幕截图(20).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-13 13:21:07 | 显示全部楼层

启用了也还是不行吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-13 13:53:19 | 显示全部楼层
isdkz 发表于 2023-2-13 13:21
启用了也还是不行吗?

是的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-13 13:58:18 | 显示全部楼层

我试了 scrapy crawl tu 没有问题呀

截图20230213135727.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-13 13:59:49 | 显示全部楼层
isdkz 发表于 2023-2-13 13:58
我试了 scrapy crawl tu 没有问题呀

那我在试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-13 14:27:27 | 显示全部楼层
isdkz 发表于 2023-2-13 13:58
我试了 scrapy crawl tu 没有问题呀
    def get_media_requests(self, item, info):

        img_src = item['src']
        print(img_src)
        yield scrapy.Request(img_src)
    def file_path(self, request, response=None, info=None, *, item=None):
        imgName = request.url.split('/')[-1]
        print(imgName,'保存成功')
        return imgName
    def item_completed(self, results, item, info):
        return item
我发现这三个函数不运行,这是为什么呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2023-2-13 14:33:44 | 显示全部楼层
哈岁NB 发表于 2023-2-13 14:27
我发现这三个函数不运行,这是为什么呢

你是执行 scrapy crawl tu 这条命令吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-13 14:38:42 | 显示全部楼层
isdkz 发表于 2023-2-13 14:33
你是执行 scrapy crawl tu 这条命令吗?

是的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-13 14:40:36 | 显示全部楼层
isdkz 发表于 2023-2-13 14:33
你是执行 scrapy crawl tu 这条命令吗?

这个输入完,啥也不保存就结束了
屏幕截图(21).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-13 14:42:40 | 显示全部楼层

那奇怪了,这个看着也没有问题呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-13 14:44:00 | 显示全部楼层
isdkz 发表于 2023-2-13 14:42
那奇怪了,这个看着也没有问题呀

那我再试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-13 14:52:14 | 显示全部楼层

截一下 tu.py 给我看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-13 15:10:48 | 显示全部楼层
isdkz 发表于 2023-2-13 14:52
截一下 tu.py 给我看看

这个
屏幕截图(22).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-13 15:25:53 | 显示全部楼层

有可能是你获取到的不是图片链接,你 print 一下 img_src 看看
import scrapy
from ..items import TupianItem

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

    def parse(self, response):
        li_list = response.xpath('//*[@id="main"]/div[3]/ul/li')
        
        for li in li_list:
            img_src = "https://pic.netbian.com" + li.xpath('.//img/@src').extract_first()
            print(img_src)               # print 一下 img_src
            item = TupianItem()
            item['src'] = img_src 

            yield item
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-13 15:43:11 | 显示全部楼层
isdkz 发表于 2023-2-13 15:25
有可能是你获取到的不是图片链接,你 print 一下 img_src 看看

链接没错呀
屏幕截图(23).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-13 16:00:09 | 显示全部楼层
本帖最后由 isdkz 于 2023-2-13 16:02 编辑


我知道你什么问题了,你把 LOG_LEVEL 设置成 ERROR 级别了,不然你应该会看到这么一个 WARNING

2023-02-13 15:57:27 [scrapy.middleware] WARNING: Disabled mediaPileline: ImagesPipeline requires installing Pillow 4.0.0 or later


这个就是说 禁用了 mediaPileline (Disabled mediaPileline),

因为ImagesPipeline 需要安装 Pillow 4.0.0 或者更新的版本(ImagesPipeline requires installing Pillow 4.0.0 or later)

所以你要安装一下 Pillow:
pip install pillow -i https://mirrors.aliyun.com/pypi/simple
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-13 16:47:09 | 显示全部楼层
isdkz 发表于 2023-2-13 16:00
我知道你什么问题了,你把 LOG_LEVEL 设置成 ERROR 级别了,不然你应该会看到这么一个 WARNING

解决了解决了,感谢感谢,这个包是干什么用的呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-13 16:51:46 | 显示全部楼层
哈岁NB 发表于 2023-2-13 16:47
解决了解决了,感谢感谢,这个包是干什么用的呢

Pillow是用来处理图片的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 15:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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