Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
作者:包子源 发布时间:2023-03-07 19:19:59
标签:Python3,爬虫,Scrapy框架
本文实例讲述了Python3爬虫爬取英雄联盟高清桌面壁纸功能。分享给大家供大家参考,具体如下:
使用Scrapy爬虫抓取英雄联盟高清桌面壁纸
源码地址:https://github.com/snowyme/loldesk
开始项目前需要安装python3和Scrapy,不会的自行百度,这里就不具体介绍了
首先,创建项目
scrapy startproject loldesk
生成项目的目录结构
首先需要定义抓取元素,在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个文件夹
希望本文所述对大家Python程序设计有所帮助。
来源:https://blog.csdn.net/ziwoods/article/details/84321188


猜你喜欢
- 方法对比:使用df[(df[“a”] > 3) & (df[“b&
- 前言之前看到一个有意思的开源项目,主要是可以将一张照片变成卡通漫画的风格。下面给大家放几张官方给出的部分效果图。看到这个效果图,还是非常经验
- HTTP暴力破解、撞库,有一些惯用的技巧,比如:1. 在扫号人人网时,我遇到单个账号错误两次,强制要求输入验证码,而对方并未实施IP策略。我
- 需求是需要用python往 SqlServer中的image类型字段中插入二进制图片核心代码,研究好几个小时的代码:安装pywin32,ad
- 前言对于刚刚下载好的pycharm,初学者使用会有一些问题,这里将介绍关于字体,背景,这些简单的设置将会提升编程的舒适度(下面以PyChar
- 译者:AlphaImageLoader是一个让IE6正常显示PNG32时要用到的一个滤镜,但它在使用中也会产生一系列的问题,本文对使用Alp
- 用flask时遇到了返回字符串支持中文显示的问题,在web端显示的是utf-8的编码,而不是中文,如下图。虽然不影响接口的读取,但是可读性太
- 在数据库中有时我们可能需要对一些数据进行处理,例如四舍五入、直接舍去后面的几位等,其实很简单,都是有现成的函数,我们只需要套用就行了:sel
- 在前面实现了平移和缩放,还有一种常用的坐标变换,那就是旋转。比如拍摄的照片上传到电脑里,再打开时发现人的头在下面脚在上,这样肯定看不了,那么
- pop()方法从列表移除并返回最后一个对象或obj。语法以下是pop()方法的语法:list.pop(obj=list[-1])
- MySQL 可调节设置可以应用于整个 mysqld进程,也可以应用于单个客户机会话。服务器端的设置每个表都可以表示为磁盘上的一个文件,必须先
- 第一种,fitimport kerasfrom keras.models import Sequentialfrom keras.layer
- 一、维数的变形1. 一维数组转二维数组以及同维变换import numpy as nparr_1d = np.arange(12)# 使用
- 先来看一个简单的利用python调用sqlplus来输出结果的例子:import osimport sysfrom subprocess i
- 一、技术背景损失函数是机器学习中直接决定训练结果好坏的一个模块,该函数用于定义计算出来的结果或者是神经网络给出的推测结论与正确结果的偏差程度
- Jquery中的一些东西学习一下子,补充完善一下,毕竟有些时候没有使用到这个方式很有用,在使用bootstrap table的时候,选择当前
- 本文讲述了joomla组件开发知识点。分享给大家供大家参考,具体如下:在你进行编码之前,有一些文件和文件夹需要创建和一些查询语句需要运行。你
- 问题查询了很多网上的文章,连接远程服务器调试基本上都是本地复制一个代码文件夹调试好后再部署到服务器上,这就很麻烦,(作为一个懒人)我想直接打
- jQuery传递中文参数乱码,原因是默认的传递方式没有采用UTF-8,所有我们可以在传递参数的时候对参数进行编码,然后再操作,代码如下,红色
- 本文实例讲述了Python实现简单状态框架的方法。分享给大家供大家参考。具体分析如下:这里使用Python实现一个简单的状态框架,代码需要在