国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python3爬蟲爬取英雄聯盟高清桌面壁紙功能示例【基于Scrapy框架】

2020-01-04 13:55:22
字體:
來源:轉載
供稿:網友

本文實例講述了Python3爬蟲爬取英雄聯盟高清桌面壁紙功能。分享給大家供大家參考,具體如下:

使用Scrapy爬蟲抓取英雄聯盟高清桌面壁紙

源碼地址:https://github.com/snowyme/loldesk

開始項目前需要安裝python3和Scrapy,不會的自行百度,這里就不具體介紹了

首先,創建項目

scrapy startproject loldesk

生成項目的目錄結構

Python3,爬蟲,英雄聯盟,桌面壁紙,Scrapy

首先需要定義抓取元素,在item.py中,我們這個項目用到了圖片名和鏈接

import scrapyclass LoldeskItem(scrapy.Item):  name = scrapy.Field()  ImgUrl = scrapy.Field()  pass

接下來在爬蟲目錄創建爬蟲文件,并編寫主要代碼,loldesk.py

import scrapyfrom loldesk.items import LoldeskItemclass loldeskpiderSpider(scrapy.Spider):  name = "loldesk"  allowed_domains = ["www.win4000.com"]  # 抓取鏈接  start_urls = [    'http://www.win4000.com/zt/lol.html'  ]  def parse(self, response):    list = response.css(".Left_bar ul li")    for img in list:      imgurl = img.css("a::attr(href)").extract_first()      imgurl2 = str(imgurl)      next_url = response.css(".next::attr(href)").extract_first()      if next_url is not None:        # 下一頁        yield response.follow(next_url, callback=self.parse)      yield scrapy.Request(imgurl2, callback=self.content)  def content(self, response):    item = LoldeskItem()    item['name'] = response.css(".pic-large::attr(title)").extract_first()    item['ImgUrl'] = response.css(".pic-large::attr(src)").extract()    yield item    # 判斷頁碼    next_url = response.css(".pic-next-img a::attr(href)").extract_first()    allnum = response.css(".ptitle em::text").extract_first()    thisnum = next_url[-6:-5]    if int(allnum) > int(thisnum):      # 下一頁      yield response.follow(next_url, callback=self.content)

圖片的鏈接和名稱已經獲取到了,接下來需要使用圖片通道下載圖片并保存到本地,pipelines.py:

from scrapy.pipelines.images import ImagesPipelinefrom scrapy.exceptions import DropItemfrom scrapy.http import Requestimport reclass MyImagesPipeline(ImagesPipeline):  def get_media_requests(self, item, info):    for image_url in item['ImgUrl']:      yield Request(image_url,meta={'item':item['name']})  def file_path(self, request, response=None, info=None):    name = request.meta['item']    name = re.sub(r'[?//*|“<>:/()0123456789]', '', name)    image_guid = request.url.split('/')[-1]    filename = u'full/{0}/{1}'.format(name, image_guid)    return filename  def item_completed(self, results, item, info):    image_path = [x['path'] for ok, x in results if ok]    if not image_path:      raise DropItem('Item contains no images')    item['image_paths'] = image_path    return item

最后在settings.py中設置存儲目錄并開啟通道:

# 設置圖片存儲路徑IMAGES_STORE = 'F:/python/loldesk'#啟動pipeline中間件ITEM_PIPELINES = {  'loldesk.pipelines.MyImagesPipeline': 300,}

在根目錄下運行程序:

scrapy crawl loldesk

大功告成!!!一共抓取到128個文件夾

Python3,爬蟲,英雄聯盟,桌面壁紙,Scrapy

 

希望本文所述對大家Python程序設計有所幫助。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凯里市| 德阳市| 和静县| 荣昌县| 迁安市| 临桂县| 达拉特旗| 喀喇| 平湖市| 资溪县| 洞口县| 朝阳区| 湖州市| 天门市| 水城县| 武乡县| 河津市| 清水县| 凤山县| 湘乡市| 忻州市| 毕节市| 五大连池市| 牡丹江市| 阿克| 忻城县| 遂昌县| 洱源县| 新蔡县| 银川市| 东台市| 庆城县| 红安县| 上思县| 白河县| 布拖县| 泰宁县| 汝城县| 怀宁县| 广宁县| 远安县|