Python爬虫:scrapy爬取斗鱼直播图片
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Python爬虫:scrapy爬取斗鱼直播图片
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                通過斗魚給出的api,獲取json文件,解析出圖片地址,可以獲取直播間的圖片 
 斗魚api接口:
比如: 
 http://open.douyucdn.cn/api/RoomApi/live/1
當然也可以用這個獲取好多妹子的圖片,當然也有小哥哥 
 http://capi.douyucdn.cn/api/v1/getVerticalRoom?limit=20&offset=
項目文件為spider.py、item.py、pipeline.py
spider.py
# -*- coding: utf-8 -*-# 通過接口,爬取斗魚圖片保存本地import sys reload(sys) sys.setdefaultencoding("utf-8")import scrapy import os from douyu_item import DouyuItem import json# 圖片存儲位置,也可以在 settings.py 中統(tǒng)一配置 BASE_DIR = os.path.dirname(os.path.abspath(__file__))IMAGES_STORE = os.path.join(BASE_DIR, "images")class DouyuSpider(scrapy.Spider):name = "douyu"allowed_domains = ["douyucdn.cn"]# 設置 圖片存儲位置 和 處理數(shù)據(jù)的管道文件custom_settings = {"IMAGES_STORE": IMAGES_STORE,"ITEM_PIPELINES":{"myspider.douyu_spider.douyu_pipeline.DouyuPipeline": 100,}}# 接口# base_url = "http://open.douyucdn.cn/api/RoomApi/live/"base_url = "http://capi.douyucdn.cn/api/v1/getVerticalRoom?limit=20&offset="offset = 0start_urls = [base_url + str(offset)]def parse(self, response):# 解析json文件datas = json.loads(response.body).get("data")# 停止條件if datas == []:print "已經(jīng)沒有圖片啦"returnfor data in datas:room_src = data.get("room_src")room_name = data.get("room_name")item = DouyuItem()item["img_name"] = room_nameitem["img_link"] = room_srcyield item# 繼續(xù)下一頁self.offset += 20yield scrapy.Request(self.base_url + str(self.offset))item.py
# -*- coding: utf-8 -*-import scrapyclass DouyuItem(scrapy.Item):img_name = scrapy.Field() # 圖片名稱img_link = scrapy.Field() # 圖片鏈接pipeline.py
# -*- coding: utf-8 -*-import scrapy import os from scrapy.pipelines.images import ImagesPipeline from myspider.douyu_spider.douyu_spider import images_pathclass DouyuPipeline(ImagesPipeline):def get_media_requests(self, item, info):# 返回需要下載的圖片鏈接img_link = item.get("img_link")yield scrapy.Request(img_link)def item_completed(self, results, item, info):# 將下載完成的圖片重命名print results"""[(True, {'url': 'https://rpic.douyucdn.cn/amrpic-180422/4475021_1048.jpg', 'path': 'full/aa6df7582a33bbe025ec0e3ebd21ff133aa56b36.jpg', 'checksum': 'bc89354a577ee6cf22a7d065859bc990'})]"""image_path = [url["path"] for ok, url in results if ok]odl_path = os.path.join(images_path, image_path[0])new_path = os.path.join(images_path, item["img_name"]+".jpg")# 重命名os.rename(odl_path, new_path)return item總結
以上是生活随笔為你收集整理的Python爬虫:scrapy爬取斗鱼直播图片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 大学英语B116-完形填空
- 下一篇: 致COSCon’20最可爱的人们~
