Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】


Posted in Python onDecember 05, 2018

本文实例讲述了Python3爬虫爬取英雄联盟高清桌面壁纸功能。分享给大家供大家参考,具体如下:

使用Scrapy爬虫抓取英雄联盟高清桌面壁纸

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

开始项目前需要安装python3和Scrapy,不会的自行百度,这里就不具体介绍了

首先,创建项目

scrapy startproject loldesk

生成项目的目录结构

Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】

首先需要定义抓取元素,在item.py中,我们这个项目用到了图片名和链接

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

接下来在爬虫目录创建爬虫文件,并编写主要代码,loldesk.py

import scrapy
from loldesk.items import LoldeskItem
class 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 ImagesPipeline
from scrapy.exceptions import DropItem
from scrapy.http import Request
import re
class 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 Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python使用reportlab画图示例(含中文汉字)
Dec 03 Python
Python获取远程文件大小的函数代码分享
May 13 Python
探究python中open函数的使用
Mar 01 Python
python实现解数独程序代码
Apr 12 Python
python基础教程项目三之万能的XML
Apr 02 Python
PYQT5设置textEdit自动滚屏的方法
Jun 14 Python
python实现微信自动回复及批量添加好友功能
Jul 03 Python
Python-Seaborn热图绘制的实现方法
Jul 15 Python
Django接收自定义http header过程详解
Aug 23 Python
基于Python爬取京东双十一商品价格曲线
Oct 23 Python
pandas针对excel处理的实现
Jan 15 Python
Pytorch 图像变换函数集合小结
Feb 01 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
Dec 05 #Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
Dec 05 #Python
python3 实现对图片进行局部切割的方法
Dec 05 #Python
python中强大的format函数实例详解
Dec 05 #Python
python3+opencv3识别图片中的物体并截取的方法
Dec 05 #Python
解决Python3.5+OpenCV3.2读取图像的问题
Dec 05 #Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
Dec 05 #Python
You might like
php检索或者复制远程文件的方法
2015/03/13 PHP
PHP判断IP并转跳到相应城市分站的方法
2015/03/25 PHP
PHP实现简单爬虫的方法
2015/07/29 PHP
PHP命令空间namespace及use的用法小结
2017/11/27 PHP
PHP微信H5支付开发实例
2018/07/25 PHP
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
JS 各种网页尺寸判断实例方法
2013/04/18 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
JavaScript  event对象整理及详细介绍
2016/10/10 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
JavaScript根据json生成html表格的示例代码
2018/10/24 Javascript
vue组件三大核心概念图文详解
2019/05/30 Javascript
python线程池的实现实例
2013/11/18 Python
用python删除java文件头上版权信息的方法
2014/07/31 Python
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
Django 如何获取前端发送的头文件详解(推荐)
2017/08/15 Python
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
mac下pycharm设置python版本的图文教程
2018/06/13 Python
Win10下python3.5和python2.7环境变量配置教程
2018/09/18 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
Python浮点数四舍五入问题的分析与解决方法
2019/11/19 Python
Python数据存储之 h5py详解
2019/12/26 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
python 使用建议与技巧分享(四)
2020/08/18 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
HTML5中的Web Notification桌面右下角通知功能的实现
2018/04/19 HTML / CSS
NEW LOOK官网:英国时装零售巨头之一,快时尚品牌
2017/01/11 全球购物
编码实现字符串转整型的函数
2012/06/02 面试题
优秀通讯员事迹材料
2014/01/28 职场文书
农贸市场管理制度
2014/01/31 职场文书
yy婚礼司仪主持词
2014/03/14 职场文书
中学生评语大全
2014/04/18 职场文书
2014入党积极分子批评与自我批评思想报告
2014/10/06 职场文书
学生保证书
2015/01/16 职场文书
Python-OpenCV教程之图像的位运算详解
2021/06/21 Python