scrapy爬取桌面壁纸

news/2024/11/23 4:01:07/

在这里插入图片描述
爬取这个页面的动漫壁纸

先创建一个爬虫项目
scrapy stratproject dongmanbizhi

scrapy getspider desk desk.zol.com.cn

在命令行写这个指令

会得到这个项目
在这里插入图片描述

desk.py 的代码


# coding=utf-8
import scrapyfrom scrapy import Requestfrom dongmanbizhi.items import DMBZItemclass DeskSpider(scrapy.Spider):name = 'desk'allowed_domains = ['desk.zol.com.cn']start_url = 'https://desk.zol.com.cn'def start_requests(self):for i in range(1, 11):url = f'{self.start_url}/dongman/{i}.html'yield Request(url=url, callback=self.parse_index)def parse_index(self, response):items = response.css(".photo-list-padding")for item in items:href = item.css(".pic::attr(href)").extract_first()if len(href) > 50:   # 判断长度 因为每一页第一个链接都是下载app的安装包 所以要去除passelse:url = f'{self.start_url}{href}'   # 合并链接yield Request(url=url, callback=self.parse_deatil)def parse_deatil(self, response):item = DMBZItem()item['img'] = response.css('#mouscroll img::attr(src)').extract_first()item['name'] = response.css('#titleName::text').extract_first()item['id'] = response.css('.photo-tit .current-num::text').extract_first()yield itemnext = response.css('.next::attr(href)').extract_first()url = f'{self.start_url}{next}'   # 获取下一页的图片yield Request(url=url, callback=self.parse_deatil)  #  因为需要点击下一页,所以需要请求下一个新链接

items.py 的代码

import scrapyclass DMBZItem(scrapy.Item):# define the fields for your item here like:img = scrapy.Field()name = scrapy.Field()id = scrapy.Field()

pipelines.py 的代码


# useful for handling different item types with a single interface
from itemadapter import ItemAdapterfrom scrapy import Request
from scrapy.exceptions import DropItem
from scrapy.pipelines.images import ImagesPipelineclass ImagePipeline(ImagesPipeline):def file_path(self, request, response=None, info=None, *, item=None):name = request.meta['name']id = request.meta['id']file_name = f'{name}/{id}.jpg'  # 构造存储路径return file_namedef get_media_requests(self, item, info):name = item['name']img = item['img']id = item['id']yield Request(img, meta={  # 提取请求里面的名字 和id"name": name,"id": id})def item_completed(self, results, item, info):image_paths = [x['path'] for ok, x in results if ok]# result 里面存放着下载的结果# 是就返回结果,否就返回报错信息if not image_paths:raise DropItem('Image Downloaded Failed')return image_paths

settings.py 的代码


BOT_NAME = 'dongmanbizhi'SPIDER_MODULES = ['dongmanbizhi.spiders']
NEWSPIDER_MODULE = 'dongmanbizhi.spiders'# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
# 设置请求头IMAGES_STORE = "D:/img"  # 图片下载位置ITEM_PIPELINES = {"dongmanbizhi.pipelines.ImagePipeline": 300   # 调用这个下载的方法
}# Obey robots.txt rules
ROBOTSTXT_OBEY = False   # 不遵守机器人协议

http://www.ppmy.cn/news/205964.html

相关文章

python爬取ZOL桌面壁纸高清图片<新手入门向>

最近学习了一下python爬虫写了个小demo,根据python网络爬虫(一) 爬取网站图片_sunrise的博客-CSDN博客_python网络爬虫爬取图片这篇文章修改了一下,这个爬取的只是分页的缩略图,这对于lsp这怎么行,那必须要…

一、使用python从ZOL下载一张壁纸

最近感觉桌面壁纸用太久了,有点视觉疲劳,所以在ZOL上新找了一张,这里,我就使用最简单的爬虫来把它抓到我的壁纸目录里吧。 首先在浏览器中审查喜欢的图片,来确定他的链接。 接下来我们使用python来将它下载下来&#x…

python爬虫---桌面壁纸换不停

文章目录 前言一、明确一个大方针二、分析网页1.查看页面结构 三、开始动手吧1.获取网页信息2.获取图片地址3.全部代码 总结 前言 本案例仅用于技术学习 每天与电脑为伴,天天看着默认的桌面屏幕,作为喜新厌旧的我怎么能忍?搜索桌面壁纸&…

upupoo启动不了 mysql_【upupoo动态桌面壁纸和MySQL API 中文手册哪个好用】upupoo动态桌面壁纸和MySQL API 中文手册对比-ZOL下载...

upupoo动态桌面是一款电脑动态桌面软件,又译为啊噗啊噗,可以将视频设为桌面壁纸,软件也收集了动漫、舞蹈、神曲、风景等大量的视频壁纸资源,全视角动态桌面,交互桌面,改变对传统桌面的认知。 软件功能 海量…

upupoo启动不了 mysql_【upupoo动态桌面壁纸和phpMySQLConsole 0.1哪个好用】upupoo动态桌面壁纸和phpMySQLConsole 0.1对比-ZOL下载...

upupoo动态桌面是一款电脑动态桌面软件,又译为啊噗啊噗,可以将视频设为桌面壁纸,软件也收集了动漫、舞蹈、神曲、风景等大量的视频壁纸资源,全视角动态桌面,交互桌面,改变对传统桌面的认知。 软件功能 海量…

python 实现桌面壁纸自动更换

学了python大概两周了,今天做了个小程序,感觉还比较实用。在此记录一下 程序介绍 功能介绍:每隔30分钟,随机更换桌面。桌面资源是在zol网,自动爬取的热门图片 开机自启设置:发送changeBg.exe快捷方式到 C:\用户\用户…

python桌面爬虫_Python爬虫爬取动漫桌面高清壁纸

这篇文章主要介绍了Python爬取高清壁纸,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 前言 在设计爬虫项目的时候,首先要在脑内明确人工浏览页面获得图…

python爬取ZOL壁纸,并批量下载到本地

声明:仅供参考、学习。 爬取地址:http://desk.zol.com.cn/dongwu/1920x1080/ 爬取页码:1-2页 存储位置:D盘根目录 运行条件:电脑安装python 3.0 代码: from urllib import request,error import re url…