国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python爬蟲之Scrapy框架--保存圖片(詳解)

這篇具有很好參考價(jià)值的文章主要介紹了python爬蟲之Scrapy框架--保存圖片(詳解)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

Scrapy 使用ImagePipeline 保存圖片

使用圖片管道?

具體步驟

安裝相關(guān)的依賴庫(kù)

創(chuàng)建Scrapy項(xiàng)目

配置settings.py?

?定義Item

?編寫Spider

運(yùn)行Spider

Scrapy 自定義ImagePipeline

自定義圖片管道


Scrapy 使用ImagePipeline 保存圖片

python爬蟲之Scrapy框架--保存圖片(詳解)

Scrapy提供了一個(gè) ImagePipeline,用來(lái)下載圖片這條管道,圖片管道ImagesPipeline?提供了方便并具有額外特性的功能,比如:

  • 將所有下載的圖片轉(zhuǎn)換成通用的格式(JPG)和模式(RGB)
  • 避免重新下載最近已經(jīng)下載過(guò)的圖片
  • 縮略圖生成
  • 檢測(cè)圖像的寬/高,確保它們滿足最小限制

使用圖片管道?

scrapy.pipelines.images.ImagesPipeline

使用 ImagesPipeline ,典型的工作流程如下所示:

  1. 在一個(gè)爬蟲中,把圖片的URL放入?image_urls?組內(nèi)(image_urls是個(gè)列表)
  2. URL從爬蟲內(nèi)返回,進(jìn)入圖片管道
  3. 當(dāng)圖片對(duì)象進(jìn)入 ImagesPipeline,image_urls 組內(nèi)的URLs將被Scrapy的調(diào)度器和下載器安排下載
  4. settings.py文件中配置保存圖片路徑參數(shù)IMAGES_STORE
  5. 開啟管道

需要安裝pillow4.0.0以上版本

pip install pillow==9.2.0

問(wèn)題

報(bào)錯(cuò):twisted.python.failure.Failure OpenSSL.SSL.Error

解決方案

pip uninstall cryptography?pip install cryptography==36.0.2


具體步驟

安裝相關(guān)的依賴庫(kù)

Pillow?

pip install scrapy Pillow
創(chuàng)建Scrapy項(xiàng)目

首先,創(chuàng)建一個(gè)Scrapy項(xiàng)目,可以使用以下命令在命令行中創(chuàng)建一個(gè)新項(xiàng)目:

scrapy startproject myproject
配置settings.py?

打開生成的Scrapy項(xiàng)目文件夾,找到其中的settings.py文件,編輯該文件,以配置ImagePipeline。

將以下代碼添加到settings.py文件中:

ITEM_PIPELINES定義項(xiàng)目中使用的管道,其中scrapy.pipelines.images.ImagesPipeline是用于處理圖片的管道。1是優(yōu)先級(jí),數(shù)字越小優(yōu)先級(jí)越高。

IMAGES_STORE是指定要保存圖片的目錄路徑。將"path/to/save/images"替換為實(shí)際的目錄路徑,以便保存圖片。

ITEM_PIPELINES = {
    'scrapy.pipelines.images.ImagesPipeline': 1
}

IMAGES_STORE = 'path/to/save/images'
?定義Item

?在Scrapy項(xiàng)目中,使用Item來(lái)定義要提取的數(shù)據(jù)。在項(xiàng)目的目錄下找到items.py文件,編輯該文件,以定義一個(gè)Item用于保存圖片鏈接。

定義一個(gè)名為MyItem的Item,它包含兩個(gè)字段:image_urlsimagesimage_urls字段用于存儲(chǔ)圖片的URL,images字段用于存儲(chǔ)已下載的圖片的信息。

import scrapy

class MyItem(scrapy.Item):
    image_urls = scrapy.Field()
    images = scrapy.Field()
?編寫Spider

在Scrapy項(xiàng)目中,Spider用于定義如何爬取和提取數(shù)據(jù)。在項(xiàng)目的目錄下找到spiders文件夾,并在該文件夾中創(chuàng)建一個(gè)Python文件,命名為myspider.py可以根據(jù)實(shí)際需求命名)。

myspider.py文件中,編寫Spider代碼以提取圖片鏈接并將其保存到MyItem中。

import scrapy
from myproject.items import MyItem

class MySpider(scrapy.Spider):
    name = 'myspider'
    start_urls = ['http://example.com']

    def parse(self, response):
        item = MyItem()
        item['image_urls'] = response.css('img::attr(src)').getall()
        yield item

定義了一個(gè)名為MySpider的Spider,設(shè)置了起始URL為??????“http://example.com”。在`parse`方法中,我們創(chuàng)建了一個(gè)`MyItem`對(duì)象,使用CSS選擇器提取頁(yè)面中的所有圖片鏈接,并將其賦值給`item['image_urls']`字段。最后,使用`yield`語(yǔ)句將`item`返回。?

運(yùn)行Spider

在命令行中,切換到項(xiàng)目根目錄,并執(zhí)行以下命令運(yùn)行Spider:

scrapy crawl myspider

這將啟動(dòng)Scrapy并開始爬取數(shù)據(jù)。當(dāng)爬取完成時(shí),圖片將自動(dòng)下載并保存到指定的目錄中。

Scrapy 自定義ImagePipeline

問(wèn)題

使用官方默認(rèn)圖片管道,有如下幾個(gè)問(wèn)題:

  • 文件名不友好
  • 存儲(chǔ)圖片URL的參數(shù)名稱與類型太固定

解決方案

自定義ImagePipeline,擴(kuò)展

自定義圖片管道

  • 繼承scrapy.pipelines.images import ImagesPipeline

  • 實(shí)現(xiàn)get_media_requests(self, item, info)方法

    • 發(fā)送請(qǐng)求,下載圖片
    • 轉(zhuǎn)發(fā)文件名
  • 實(shí)現(xiàn)file_path(self,request,response=None,info=None,*,item=None)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-506759.html

    • 修改文件名與保存路徑
import re


class Scrapy05Pipeline:
  def process_item(self, item, spider):
    return item


from scrapy.pipelines.images import ImagesPipeline
from scrapy.http.request import Request


class MyImagePipeline(ImagesPipeline):
  def get_media_requests(self, item, info):
    return Request(item['image_url'])
  
  def file_path(self, request, response=None, info=None, *, item=None):
    # 處理文件名中的特殊字符
    # name = item.get('name').strip().replace('\r\n\t\t','').replace('(','').replace(')','').replace('/','_')
    name = re.sub('/','_',re.sub('[\s()]','',item.get('name')))
    return f'{name}.jpg'

到了這里,關(guān)于python爬蟲之Scrapy框架--保存圖片(詳解)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Scrapy:Python中強(qiáng)大的網(wǎng)絡(luò)爬蟲框架

    Scrapy:Python中強(qiáng)大的網(wǎng)絡(luò)爬蟲框架

    在當(dāng)今信息爆炸的時(shí)代,從互聯(lián)網(wǎng)上獲取數(shù)據(jù)已經(jīng)成為許多應(yīng)用程序的核心需求。Scrapy是一款基于Python的強(qiáng)大網(wǎng)絡(luò)爬蟲框架,它提供了一種靈活且高效的方式來(lái)提取、處理和存儲(chǔ)互聯(lián)網(wǎng)上的數(shù)據(jù)。本文將介紹Scrapy的主要特性和優(yōu)勢(shì),以及如何使用它來(lái)構(gòu)建強(qiáng)大的網(wǎng)絡(luò)爬蟲。

    2024年02月19日
    瀏覽(23)
  • Python爬蟲開發(fā):Scrapy框架與Requests庫(kù)

    Python爬蟲開發(fā)中有兩個(gè)非常流行的工具:Scrapy框架和Requests庫(kù)。它們各自有自己的優(yōu)點(diǎn)和適用場(chǎng)景。 Scrapy Scrapy是一個(gè)為了爬取網(wǎng)站并提取結(jié)構(gòu)化數(shù)據(jù)而編寫的應(yīng)用框架,可以非常方便地實(shí)現(xiàn)網(wǎng)頁(yè)信息的抓取。Scrapy提供了多種可配置、可重用的組件,如調(diào)度器、下載器、爬蟲和

    2024年02月19日
    瀏覽(15)
  • 【100天精通python】Day45:python網(wǎng)絡(luò)爬蟲開發(fā)_ Scrapy 爬蟲框架

    目錄 1 Scrapy 的簡(jiǎn)介 2 Scrapy選擇器 3 快速創(chuàng)建Scrapy 爬蟲 4 下載器與爬蟲中間件

    2024年02月11日
    瀏覽(30)
  • Python爬蟲之Scrapy框架系列(23)——分布式爬蟲scrapy_redis淺實(shí)戰(zhàn)【XXTop250部分爬取】

    先用單獨(dú)一個(gè)項(xiàng)目來(lái)使用scrapy_redis,講解一些重要點(diǎn)!

    2024年02月16日
    瀏覽(24)
  • 07_scrapy的應(yīng)用——獲取電影數(shù)據(jù)(通過(guò)excel保存靜態(tài)頁(yè)面scrapy爬蟲數(shù)據(jù)的模板/通過(guò)數(shù)據(jù)庫(kù)保存)

    07_scrapy的應(yīng)用——獲取電影數(shù)據(jù)(通過(guò)excel保存靜態(tài)頁(yè)面scrapy爬蟲數(shù)據(jù)的模板/通過(guò)數(shù)據(jù)庫(kù)保存)

    一般我們自己創(chuàng)建的一些python項(xiàng)目,我們都需要?jiǎng)?chuàng)建虛擬環(huán)境,其中會(huì)下載很多包,也叫做依賴。但是我們?cè)诮o他人分享我們的項(xiàng)目時(shí),不能把虛擬環(huán)境打包發(fā)送給別人,因?yàn)槊總€(gè)人電腦系統(tǒng)不同,我們可以把依賴導(dǎo)出為依賴清單,然后別人有了我們的依賴清單,就可以用一

    2024年02月09日
    瀏覽(23)
  • 《零基礎(chǔ)入門學(xué)習(xí)Python》第063講:論一只爬蟲的自我修養(yǎng)11:Scrapy框架之初窺門徑

    《零基礎(chǔ)入門學(xué)習(xí)Python》第063講:論一只爬蟲的自我修養(yǎng)11:Scrapy框架之初窺門徑

    上一節(jié)課我們好不容易裝好了?Scrapy,今天我們就來(lái)學(xué)習(xí)如何用好它,有些同學(xué)可能會(huì)有些疑惑,既然我們懂得了Python編寫爬蟲的技巧,那要這個(gè)所謂的爬蟲框架又有什么用呢?其實(shí)啊,你懂得Python寫爬蟲的代碼,好比你懂武功,會(huì)打架,但行軍打仗你不行,畢竟敵人是千軍

    2024年02月16日
    瀏覽(65)
  • 爬蟲---scrapy爬蟲框架(詳細(xì)+實(shí)戰(zhàn))

    爬蟲---scrapy爬蟲框架(詳細(xì)+實(shí)戰(zhàn))

    ? 活動(dòng)地址:CSDN21天學(xué)習(xí)挑戰(zhàn)賽 1、基本功能 Scrapy 是一個(gè)適用爬取網(wǎng)站數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)的應(yīng)用程序框架,它可以應(yīng)用在廣泛領(lǐng)域:Scrapy 常應(yīng)用在包括數(shù)據(jù)挖掘,信息處理或存儲(chǔ)歷史數(shù)據(jù)等一系列的程序中。通常我們可以很簡(jiǎn)單的通過(guò) Scrapy 框架實(shí)現(xiàn)一個(gè)爬蟲,抓取指

    2023年04月22日
    瀏覽(20)
  • 爬蟲:Scrapy熱門爬蟲框架介紹

    結(jié)合自身經(jīng)驗(yàn)和內(nèi)部資料總結(jié)的Python教程,每天3-5章,最短1個(gè)月就能全方位的完成Python的學(xué)習(xí)并進(jìn)行實(shí)戰(zhàn)開發(fā),學(xué)完了定能成為大佬!加油吧!卷起來(lái)! 全部文章請(qǐng)?jiān)L問(wèn)專欄:《Python全棧教程(0基礎(chǔ))》 再推薦一下最近熱更的:《大廠測(cè)試高頻面試題詳解》 該專欄對(duì)近年

    2024年02月13日
    瀏覽(23)
  • 爬蟲(四):Scrapy熱門爬蟲框架介紹

    結(jié)合自身經(jīng)驗(yàn)和內(nèi)部資料總結(jié)的Python教程,每天3-5章,最短1個(gè)月就能全方位的完成Python的學(xué)習(xí)并進(jìn)行實(shí)戰(zhàn)開發(fā),學(xué)完了定能成為大佬!加油吧!卷起來(lái)! 全部文章請(qǐng)?jiān)L問(wèn)專欄:《Python全棧教程(0基礎(chǔ))》 再推薦一下最近熱更的:《大廠測(cè)試高頻面試題詳解》 該專欄對(duì)近年

    2024年02月11日
    瀏覽(21)
  • 爬蟲框架scrapy基本原理

    爬蟲框架scrapy基本原理

    scrapy是python的爬蟲框架,類似于django(python的web框架)。 安裝: Mac、Linux 執(zhí)行 pip3 install scrapy ,不存在任何問(wèn)題 Windows 執(zhí)行 pip3 install scrapy ,如果安裝失敗,執(zhí)行下面步驟: (1)安裝wheel(為支持通過(guò)文件安裝軟件): pip3 install wheel (wheel官網(wǎng)) (2)安裝lxml: pip3 insta

    2024年02月15日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包