Python爬虫之高清壁纸下载

news/2024/11/23 0:33:58/

Python爬虫之高清壁纸下载

  今天发现了一个非常不错的壁纸网站https://unsplash.com/,高清非常适合做壁纸,我已经受够自己电脑桌面的那么几张壁纸了,于是准备把它们都给爬下来。

Step 1:分析页面

  首先打开网站https://unsplash.com/,高清又漂亮的壁纸就呈现在眼前了,页面没有“下一页”,向下滑动页面发现新的图片不断被加载出来,这个过程显然是动态完成的。
  于是,打开Chrom浏览器,F12进入开发者工具,抓取页面请求。机智的我发现它们是这样请求图片数据的。

页面请求

   同时,还可以发现url提交的参数中包含了当前页page,每一页显示的图片数per_page以及图片显示顺序order_by,因此想抓取下一页只要在page的值上做改变就可以了。OK,分析完毕可以开抓了。

Step 2:页面抓取

  采用多线程爬虫,页面抓取线程负责对页面进行抓取,解析页面返回的Json数据,将每一页的图片url存储在队列中,图片下载线程负责从队列中取出待下载图片的url进行下载,以下是代码部分
定义一些必要的变量

pictures = Queue()#待下载图片url队列
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36','Connection': 'keep-alive','Upgrade-Insecure-Requests':'1','authorization':'Client-ID d69927c7ea5c770fa2ce9a2f1e3589bd896454f7068f689d8e41a25b54fa6042','x-unsplash-client':'web'}
session = requests.session()
session.headers.update(headers)#更新Http请求头

页面抓取线程:

class wallPaperScracher(threading.Thread):def __init__(self):threading.Thread.__init__(self)self.url = ''self.cur_page = 1self.pics_pattern = re.compile(r'"download":"(.*?)"',re.S)def getPicture(self):while self.cur_page <= 15:self.url = 'https://unsplash.com/napi/photos/curated?page=' + str(self.cur_page) +'&per_page=12&order_by=latest'res = session.get(self.url)json = res.contentpics = re.findall(self.pics_pattern, json)for url in pics:print('第%d页,正在存储图片%s' % (self.cur_page,url))pictures.put(url)self.cur_page += 1pictures.put(None)#标志结束def run(self):self.getPicture()

图片下载线程:

class picDownloader(threading.Thread):def __init__(self):threading.Thread.__init__(self)self.pattern = re.compile(r'photos/(.*?)/')def downloadPic(self):while True:pic_url = pictures.get()if not pic_url:#取到None则停止下载breakpic_name = re.search(self.pattern, pic_url).group(1)f = open('E:\\HDPhoto\\' + pic_name + '.jpg', 'wb')res = session.get(pic_url)print('正在下载图片 : %s' % pic_url)f.write(res.content)def run(self):self.downloadPic()

主函数:启动三个下载线程

    scracher = wallPaperScracher()scracher.start()for i in range(3):downloader = picDownloader()downloader.start()

好了,代码搞定。坐等图片…,有新壁纸喽!

pics


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

相关文章

python手机壁纸超清_python下载高清壁纸

壁纸网址&#xff1a;https://bing.ioliu.cn/ranking&#xff0c;爬取的是排行榜上的壁纸 源码: import bs4,re,os,requests session requests.session() headers { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 …

android原生农场壁纸,Android 6.0高清壁纸下载-Android 6.0原生壁纸高清免费打包下载-东坡下载...

android 6.0在现在是很多的安卓手机用户都是升级到这个版本的&#xff0c;那么你需要一些适合这个版本的高清主题壁纸吗&#xff1f;想要的话现在就赶快来下载吧&#xff01; android 6.0新特性 新特性一&#xff1a;App Permissions(软件权限管理) 在安卓6.0里&#xff0c;应用…

python手机壁纸超清_Python爬虫-王者荣耀高清壁纸下载

绪论 网络爬虫&#xff08;又称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在FOAF社区中间&#xff0c;更经常的称为网页追逐者&#xff09;&#xff0c;是一种按照一定的规则&#xff0c;自动地抓取万维网信息的程序或者脚本。python是一种跨平台的计算机程序设计语言。是…

android系统壁纸下载,提前用上Android 12系统 官方高清壁纸下载

此前有新闻曝光了Android 12系统的一些新进展&#xff0c;Android 12界面采用了全新的扁平界面&#xff0c;似乎使用较少的透明度 , 更多的白色空间和更多的圆角&#xff0c;网友看了直呼神似苹果iOS。俄罗斯媒体rozetked近日提前拿到了安卓 12 开发者预览版&#xff0c;并提取…

下载好看的壁纸,这几个网站就够了

1.彼岸网 http://www.netbian.com/ 彼岸网是我经常使用的一个网站&#xff0c;网站里面有很多4k高清壁纸&#xff0c;壁纸的质量很高。虽然是收费的网站&#xff0c;但是非会员每天还是免费可以下载一张壁纸&#xff0c;不过这对我们来说也够用了。 埃列什基伽勒 制服 丝袜大长…

从架构设计思想出发看Flutter

Flutter 是一种流行的移动应用程序开发框架&#xff0c;它的设计特点之一是可以使用单一代码库构建 iOS 和 Android 应用程序。然而&#xff0c;对于功能比较多、模块比较复杂的应用程序&#xff0c;仅凭单一的代码库就可能导致代码的复杂性和维护难度的增加。在这种情况下&…

Ubuntu安装显卡驱动弹secure boot

惠普电脑安装nvidia2070显卡驱动突然弹出secure boot&#xff0c;点了确定并输入八位密码之后会出现各种报错&#xff0c;主要原因是secure boot没有禁用&#xff0c;按照网上教程发现惠普win10的BIOS和网上教程不一样。 开机按F9&#xff0c;进入BIOS&#xff0c;然后选择安全…

惠普笔记本电脑驱动BIOS下载中心,战66驱动下载

最近发现我战66 g3 2020&#xff0c;fnf3 f4屏幕亮度无法调节&#xff0c;已确定不是键盘的问题&#xff0c;搜索发现可能是驱动问题。 惠普产品 https://support.hp.com/cn-zh/drivers/laptops 战66驱动程序下载 https://support.hp.com/cn-zh/drivers/selfservice/hp-zhan-…