Python3.7 爬取彼岸桌面(2021-6-27 21:39:58)
问题描述: 昨天写了一个粗糙的爬取风景的 python ,今天写个稍微好一点的爬取彼岸桌面的代码
# -*- coding=utf-8 -*-
# 1: 引包
import time
import urllib.request # url 请求
import re # 正则匹配需要的内容(图片)
import os # OS 写入文件(二进制写入成为图片)'''因为上次用最简单,最粗糙的代码实现了单个栏目的彼岸桌面的下载,这次用比较好一点的代码逻辑去实现该代码把功能分类
'''rootUrl = "http://www.netbian.com"
browserAgent = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" } # 全局浏览器标识(AGENT 代理)def getResponseHandle(url): # 拿到请求句柄responseHandle = urllib.request.Request(url, headers=browserAgent) # 设置请求 headerresponse = urllib.request.urlopen(responseHandle)return responsedef getHttpCode(url): # 得到允许请求的链接response = getResponseHandle(url)if response.getcode() == 200:print(url + " 允许访问")return urlelse:print(url + " 访问失败")def getContent(url): # 得到请求内容response = getResponseHandle(url)content = response.read().decode("GBK")print(url + " 1920 * 1080的次链接获取完成。")return contentdef getReOnceContent(url, reOnceImgUrlList): # ② 正则一链接URLcontent = getContent(url)content = re.finditer('(?<=(<li><a href=")).*?(?=" title=")', content)for url in content:singleUrl = url.group()if singleUrl.find("desk") > 0:print("处理前的 URL是: " + singleUrl)singleUrl = reUrlArr(singleUrl)reOnceImgUrlList.append(singleUrl)print("已经添加了匹配并处理后得到链接 : " + singleUrl)def getReTwiceContent(url): # ③ 正则二真实地址content = getContent(url)reUrl = re.finditer('(?<=(<img src=")).*?(?=" title)', content)for singleUrl in reUrl:singleUrl = singleUrl.group()print("得到最终的 1920 * 1080 的图片地址: " + singleUrl)return singleUrldef reUrlArr(url):urlArr = url.split(".htm")url = rootUrl + urlArr[0] + "-1920x1080.htm" # 因为只要下载 1920 * 1080 的壁纸, 就没有去设置其它像素参数return urldef createFile(lastFileName, fileName): # 文件夹创建dirName = lastFileName + "/" + fileNameif not os.path.exists(dirName):os.mkdir(dirName)print(dirName + " 文件夹创建完成")else:print(dirName + " 无法创建,可能已经存在")return dirNamedef downloadImage(url, imgName, dirName): # 图片下载imgFullName = dirName + "/" + str(imgName + 1) + ".jpg"print("即将下载图片文件: " + imgFullName)fo = open(imgFullName, 'wb') # 用二进制写入fo.write(getResponseHandle(url).read())fo.close()print(str(imgName + 1) + ".jpg 下载完成")if __name__ == "__main__":urlListName = ['huahui', 'dongwu', 'huyan']# 'http://www.netbian.com/fengjing/', # 风景 http://www.netbian.com/fengjing/index_2.htm 有 204 页 风景已经在下载了urlList = ['http://www.netbian.com/huahui/', # 花卉 http://www.netbian.com/huahui/index_48.htm 共有 48 页'http://www.netbian.com/dongwu/', # 动物 http://www.netbian.com/dongwu/index_48.htm 共有 48 页'http://www.netbian.com/s/huyan/' # 护眼 http://www.netbian.com/huyan/index_47.htm 共有 47 页]urlListMaxPage = [49, 49, 48] # 最大页数 + 1, 是因为 range() 不闭合# urlListMaxPage = [3] # 最大页数 + 1, 是因为 range() 不闭合 # 测试urlListMaxPageLen = len(urlListMaxPage)fromNumberPage = 1# 1: 得到列表页的 URL, 2: 每个列表页的正则取一下第一层图片内容(正则一链接URL); 3:正则一内容再正则一次得到图片的真实地址(正则二真实地址); 4: 真实地址读取二进制写入就成为图片# ① 得到请求句柄for i in range(0, urlListMaxPageLen):listSuccessUrl = [] # 列表页的 URL code = 200dirName = createFile("./repitleImg", urlListName[i]) # 在当前文件夹 ./repitleImg 下创建文件夹for j in range(1, urlListMaxPage[i]):if j > 1:time.sleep(12)listSuccessUrl.append(getHttpCode(urlList[i] + "index_" + str(j) + ".htm"))else:listSuccessUrl.append(getHttpCode(urlList[i]))# ② 正则一链接URLprint(listSuccessUrl)listSuccessUrlLen = len(listSuccessUrl)reOnceImgUrlList = [] # 图片正则匹配第一次的数组for k in range(0, listSuccessUrlLen):time.sleep(5)getReOnceContent(listSuccessUrl[k], reOnceImgUrlList)# ③ 正则二真实地址print(urlListName[i] + "的所有1920 * 1080 链接如下:")print(reOnceImgUrlList)# 把正则二的真实地址 reOnceImgUrlList[0] 测试一下reOnceImgUrlListLen = len(reOnceImgUrlList)reTwiceUrlList = []for k in range(0, reOnceImgUrlListLen): # 得到最终的图片文件地址time.sleep(5)reTwiceUrlList.append(getReTwiceContent(reOnceImgUrlList[k]))# if k == 0: # 这两行是为了测试# reTwiceUrlList.append(getReTwiceContent(reOnceImgUrlList[k]))print("得到最终" + urlListName[i] + "的图片地址列表: ")print(reTwiceUrlList)reTwiceUrlListLen = len(reTwiceUrlList)for k in range(0, reTwiceUrlListLen): # 逐一写入文件downloadImage(reTwiceUrlList[k], k, dirName) # 图片的 url, 文件名, 文件夹名
结果,下载了 800 多张的时候,遇到了这么个情况:
报错了:
修复一下: 2021年6月27日23:20:35
把添加到列表里面的时候处理一下,添加个含有 .jpg 的试试。
继续总结(2021年7月4日21:18:46): 如果出现 http 错误,程序会终止,所以有问题。
Python3.7 爬取彼岸桌面(2021-6-27 21:39:58)相关推荐
- 运用python爬取彼岸桌面所有关键字高清壁纸
运用python爬取彼岸桌面所有关键字高清壁纸 第一次在csdn写博客, 个人技术并不成熟, 还是学生, 高手轻喷菜鸡勿啄 就是心血来潮想要换桌面壁纸, 存在一个文件夹自动更换, 但是从网站上一个一个 ...
- Java爬虫学习一一Jsoup爬取彼岸桌面分类下的图片
最近在找工作,在这个过程中我感到很迷茫,投了很多简历,被查看的却很少,其中也有到现场去面试,结果也很不理想(╥╯^╰╥). 哈哈,跑题了,我在看之前所做的项目时,在我的收藏夹中看到了以前收藏的有关爬虫 ...
- Python爬虫入门案例教学:批量爬取彼岸桌面4K超清美女壁纸
先图片开路 环境介绍 python 3.6 / 3.8 pycharm 编辑器 requests parsel os 文件操作 在cmd里面就可以进行安装 pip install requests 无 ...
- Java爬虫---实战案例(爬取彼岸桌面壁纸)
目录 步骤一:创建项目 步骤二:网页分析 1.在缩略图页面获取到详情页的超链接 2.在详情页页面获取到图片的下载地址 步骤三:图片下载 翻页功能 源代码 平时玩的爬虫都是用python写的,今天突发奇 ...
- Python爬取彼岸图4k壁纸,想要什么类型的壁纸就输入什么壁纸,太方便了。
你桌面的壁纸还是用的默认壁纸么?太low了,今天教你用python爬取彼岸图网的4k壁纸,想要什么类型的壁纸就爬什么壁纸,快点来跟我一起试试吧! 这个壁纸怎么样?喜欢吗?你值得拥有... 代码操作一下 ...
- 爬取彼岸网所有4K美图壁纸--Python脚本
在360壁纸中发现很多图片需要会员才能使用,emmmmm我这种白嫖怪哪买的起会员,所以自己写了一个Python脚本爬取彼岸网的壁纸. 废话不多说直接上代码: #-*- coding = utf-8 - ...
- Python网络爬虫8 - 爬取彼岸图网美图
彼岸图网收集了大量美图,是个不错的爬取对象.话不多说,直接上图. 分析站点 分类列表 爬取之前,自然要分析一波,这个站点的框架比较简单,从分类着手,共包含12个分类项. 4K人物 4K动漫 4K动物 ...
- python3 爬虫 爬取华为应用市场 APP应用评论(一)爬取全部评论——学霸君
python3 爬虫 爬取华为应用市场 APP应用评论(一)爬取全部评论--学霸君 import requests import re import requests from bs4 import ...
- python桌面爬虫_爬虫项目实战十三:爬取zol桌面壁纸
目标 爬取zol桌面壁纸,批量下载图片. 项目准备 软件:Pycharm 第三方库:requests,fake_useragent,re,lxml 网站地址:http://desk.zol.com.c ...
最新文章
- “去哪儿网”2015春招前端面试题
- XML 学习 (3)
- 详解rsync算法--如何减少同步文件时的网络传输量
- 超融合和服务器关系_超融合与传统服务器区别
- 左右伸缩_SSFB梳齿型桥梁伸缩缝安装步骤及使用特性
- A1137 | 录数据查询模拟
- android没有实现glFlush或glFinish
- Hybrid App是如何实现网页语言与程序语言的混合?谁占主体?
- android 动画库
- python3d旋转相册,用HTML+CSS代码制作3D旋转相册
- 六大设计原则之SRP
- 技术架构图-Java技术栈
- word多级目录设置和自动生成目录
- 苹果公司发布iPhone 5s和iPhone 5c
- Python中time.sleep(0.001)真的只等待1毫秒吗?
- java后台实现CKFinder2.3版本+阿里OSS存储
- 银联收单清算体系及处理流程
- C语言 金明的预算方案(动态规划):金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用 的很宽敞的房间。
- 为知笔记Markdown笔记里的插入代码怎么实现/为知笔记怎怎么插入代码段
- dynamic 365 前端操作
热门文章
- 互联网晚报 | 8月25日 星期三 | 拼多多年度活跃买家数达8.5亿;钉钉推出首个数字工牌产品“钉工牌”;小度科技完成B轮融资...
- 航空软件静态测试标准,静态试验
- 焊接LQFP48 和 LQFP64 封装的芯片的记录
- Redis 跳跃表原理
- TiDB 重要监控指标详解
- 射频芯片基础知识科普
- 嵌入式入门之路坎坷但无比的有趣 心得交流3
- android raw获取uri_音频-获取存储在android的res / raw文件夹中的.mp3文件的URI
- 论理想的AR/VR广告应该什么样?
- 天猫11.11:搜索引擎实时秒级更新