scrapy
大佬们,为什么这个程序没有报错,但最后却没有保存下图片,请求帮忙看一看爬虫文件
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/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
本帖最后由 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
isdkz 发表于 2023-2-13 10:36
配置文件 settings.py 里面关键的三个配置设置了没有?
第一(启用 pipeline):
启用了 哈岁NB 发表于 2023-2-13 13:04
启用了
启用了也还是不行吗? isdkz 发表于 2023-2-13 13:21
启用了也还是不行吗?
是的 哈岁NB 发表于 2023-2-13 13:53
是的
我试了 scrapy crawl tu 没有问题呀
isdkz 发表于 2023-2-13 13:58
我试了 scrapy crawl tu 没有问题呀
那我在试试 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
我发现这三个函数不运行,这是为什么呢 哈岁NB 发表于 2023-2-13 14:27
我发现这三个函数不运行,这是为什么呢
你是执行 scrapy crawl tu 这条命令吗? isdkz 发表于 2023-2-13 14:33
你是执行 scrapy crawl tu 这条命令吗?
是的 isdkz 发表于 2023-2-13 14:33
你是执行 scrapy crawl tu 这条命令吗?
这个输入完,啥也不保存就结束了 哈岁NB 发表于 2023-2-13 14:38
是的
那奇怪了,这个看着也没有问题呀 isdkz 发表于 2023-2-13 14:42
那奇怪了,这个看着也没有问题呀
那我再试试 哈岁NB 发表于 2023-2-13 14:44
那我再试试
截一下 tu.py 给我看看 isdkz 发表于 2023-2-13 14:52
截一下 tu.py 给我看看
这个 哈岁NB 发表于 2023-2-13 15:10
这个
有可能是你获取到的不是图片链接,你 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/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 isdkz 发表于 2023-2-13 15:25
有可能是你获取到的不是图片链接,你 print 一下 img_src 看看
链接没错呀 本帖最后由 isdkz 于 2023-2-13 16:02 编辑
哈岁NB 发表于 2023-2-13 15:43
链接没错呀
我知道你什么问题了,你把 LOG_LEVEL 设置成 ERROR 级别了,不然你应该会看到这么一个 WARNING
2023-02-13 15:57:27 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 isdkz 发表于 2023-2-13 16:00
我知道你什么问题了,你把 LOG_LEVEL 设置成 ERROR 级别了,不然你应该会看到这么一个 WARNING
解决了解决了,感谢感谢,这个包是干什么用的呢 哈岁NB 发表于 2023-2-13 16:47
解决了解决了,感谢感谢,这个包是干什么用的呢
Pillow是用来处理图片的
页:
[1]
2