您好,登錄后才能下訂單哦!
這篇文章主要介紹python爬蟲怎么使用內置的scrapy內置下載文件,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
Python是一種跨平臺的、具有解釋性、編譯性、互動性和面向對象的腳本語言,其最初的設計是用于編寫自動化腳本,隨著版本的不斷更新和新功能的添加,常用于用于開發獨立的項目和大型項目。
一、為什么要選擇scrapy內置的下載文件?
1、避免重新下載最近已經下載過的數據;
2、可以方便的指定文件存儲的路徑;
3、可以將下載的圖片轉換成通用的格式,如:png,jpg等;
4、可以方便地生成縮略圖;
5、可以方便地檢測圖片的寬和?,確保它們滿足最小限制;
6、異步下載,效率非常高。
二、使用images pipeline下載文件步驟如下:
第一步,在items文件中定義兩個屬性,分別為image_urls以及images,這兩個屬性名字不能隨意修改。
image_urls = scrapy.Field() # 圖片的url images = scrapy.Field() # 路徑
第二步,編寫爬蟲程序,需要注意的是image_urls用來存儲需要下載文件的url鏈接,需要給?個列表;
pic_url = pic.xpath('./a/img/@src').extract_first() pic_url = response.urljoin(pic_url) item['image_urls'] = [pic_url]
第三步,在settings中指定路徑IMAGES_STORE = xxxxxxx,當圖片下載完成后,scrapy會把圖片下載的相關信息存儲到item的images屬性中,如下載路徑、下載的url和圖片校驗碼等;
import os IMAGES_STORE = os.path.join(os.path.dirname(__file__), 'result_pic')
第四步,在settings中做配置,開啟內置的圖片管道,此時可以不用自帶的管道。
'scrapy.pipelines.images.ImagesPipeline':1
三、具體代碼
# 爬蟲代碼 import scrapy from day21.vehicle_home.vehicle_home.items import VehicleHomeItem class VehPicSpider(scrapy.Spider): name = 'veh_pic' allowed_domains = ['car.autohome.com.cn'] base_url = 'https://car.autohome.com.cn/photolist/series/18/p{}/' start_urls = [base_url.format(1)] def parse(self, response): # 獲取圖片標簽列表 pic_lists = response.xpath('//ul[@id="imgList"]/li') for pic in pic_lists: pic_url = pic.xpath('./a/img/@src').extract_first() # 上述獲取的url需要進一步補全 pic_url = response.urljoin(pic_url) item = VehicleHomeItem() item['image_urls'] = [pic_url] # 傳遞列表 print(item) yield item # 翻頁邏輯 for page in range(2, 3): next_url = self.base_url.format(page) yield scrapy.Request(next_url) # settings 代碼,只給出關鍵部分 # 開啟內置管道 ITEM_PIPELINES = { # 'vehicle_home.pipelines.VehicleHomePipeline': 300, 'scrapy.pipelines.images.ImagesPipeline': 1, } # 指定圖片存放路徑 import os IMAGES_STORE = os.path.join(os.path.dirname(__file__), 'result_pic') # items 代碼 import scrapy class VehicleHomeItem(scrapy.Item): image_urls = scrapy.Field() # 圖片的url images = scrapy.Field() # 圖片路徑
以上是“python爬蟲怎么使用內置的scrapy內置下載文件”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。