python - 使用scrapy下载图像时遇到问题
问题描述
我在 python scrapy 中编写了一个脚本来从网站下载一些图像。当我运行我的脚本时,我可以在控制台中看到图像的链接(它们都是.jpg
格式的)。但是,当我打开下载完成后应该保存图像的文件夹时,我什么也没有。我在哪里犯错误?
这是我的蜘蛛(我从崇高的文本编辑器运行):
import scrapy
from scrapy.crawler import CrawlerProcess
class YifyTorrentSpider(scrapy.Spider):
name = "yifytorrent"
start_urls= ['https://www.yify-torrent.org/search/1080p/']
def parse(self, response):
for q in response.css("article.img-item .poster-thumb"):
image = response.urljoin(q.css("::attr(src)").extract_first())
yield {'':image}
c = CrawlerProcess({
'USER_AGENT': 'Mozilla/5.0',
})
c.crawl(YifyTorrentSpider)
c.start()
这是我settings.py
为要保存的图像定义的内容:
ITEM_PIPELINES = {
'scrapy.pipelines.images.ImagesPipeline': 1,
}
IMAGES_STORE = "/Desktop/torrentspider/torrentspider/spiders/Images"
为了让事情更清楚:
- 我期望保存图像的文件夹命名为
Images
我放置在spider
project 下的文件夹中torrentspider
。 Images
文件夹的实际地址是C:\Users\WCS\Desktop\torrentspider\torrentspider\spiders
.
这不是在文件的帮助下成功运行脚本items.py
。因此,任何使用items.py
文件进行下载的解决方案都不是我想要的。
解决方案
您生成的项目不遵循 Scrapy 的文档。正如他们的媒体管道文档中详述的那样,该项目应该有一个名为image_urls
. 您应该将 parse 方法更改为与此类似的方法。
def parse(self, response):
images = []
for q in response.css("article.img-item .poster-thumb"):
image = response.urljoin(q.css("::attr(src)").extract_first())
images.append(image)
yield {'image_urls': images}
我刚刚对此进行了测试,并且可以正常工作。此外,正如 Pruthvi Kumar 评论的那样, IMAGES_STORE 应该就像
IMAGES_STORE = 'Images'
推荐阅读
- form-submit - formSubmitReply 函数,错误提示“Exception: Service requested too many times in the same day: email”
- spring-boot - 使用 okhttp3 Mockwebserver 进行 Spring webclient 测试
- python - 绘制具有不同大小数组的多行的最小值数组
- c - c 函数 log_init 中的段错误
- jquery - 如何从 MVC 中的视图打印整个表格
- ios - SwiftUI:iCloud 文档和 CloudKit
- google-chrome - 如何仅使用 chrome 导出响应正文
- javascript - 如何在 jqplot 图表中绘制确切的 Xaxis?
- c# - 如何使验证摘要一次列出所有错误?
- guice - 我们如何在运行时或应用程序启动时禁用 guice 过滤器?