问题描述: 昨天写了一个粗糙的爬取风景的 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)相关推荐

  1. 运用python爬取彼岸桌面所有关键字高清壁纸

    运用python爬取彼岸桌面所有关键字高清壁纸 第一次在csdn写博客, 个人技术并不成熟, 还是学生, 高手轻喷菜鸡勿啄 就是心血来潮想要换桌面壁纸, 存在一个文件夹自动更换, 但是从网站上一个一个 ...

  2. Java爬虫学习一一Jsoup爬取彼岸桌面分类下的图片

    最近在找工作,在这个过程中我感到很迷茫,投了很多简历,被查看的却很少,其中也有到现场去面试,结果也很不理想(╥╯^╰╥). 哈哈,跑题了,我在看之前所做的项目时,在我的收藏夹中看到了以前收藏的有关爬虫 ...

  3. Python爬虫入门案例教学:批量爬取彼岸桌面4K超清美女壁纸

    先图片开路 环境介绍 python 3.6 / 3.8 pycharm 编辑器 requests parsel os 文件操作 在cmd里面就可以进行安装 pip install requests 无 ...

  4. Java爬虫---实战案例(爬取彼岸桌面壁纸)

    目录 步骤一:创建项目 步骤二:网页分析 1.在缩略图页面获取到详情页的超链接 2.在详情页页面获取到图片的下载地址 步骤三:图片下载 翻页功能 源代码 平时玩的爬虫都是用python写的,今天突发奇 ...

  5. Python爬取彼岸图4k壁纸,想要什么类型的壁纸就输入什么壁纸,太方便了。

    你桌面的壁纸还是用的默认壁纸么?太low了,今天教你用python爬取彼岸图网的4k壁纸,想要什么类型的壁纸就爬什么壁纸,快点来跟我一起试试吧! 这个壁纸怎么样?喜欢吗?你值得拥有... 代码操作一下 ...

  6. 爬取彼岸网所有4K美图壁纸--Python脚本

    在360壁纸中发现很多图片需要会员才能使用,emmmmm我这种白嫖怪哪买的起会员,所以自己写了一个Python脚本爬取彼岸网的壁纸. 废话不多说直接上代码: #-*- coding = utf-8 - ...

  7. Python网络爬虫8 - 爬取彼岸图网美图

    彼岸图网收集了大量美图,是个不错的爬取对象.话不多说,直接上图. 分析站点 分类列表 爬取之前,自然要分析一波,这个站点的框架比较简单,从分类着手,共包含12个分类项. 4K人物 4K动漫 4K动物 ...

  8. python3 爬虫 爬取华为应用市场 APP应用评论(一)爬取全部评论——学霸君

    python3 爬虫 爬取华为应用市场 APP应用评论(一)爬取全部评论--学霸君 import requests import re import requests from bs4 import ...

  9. python桌面爬虫_爬虫项目实战十三:爬取zol桌面壁纸

    目标 爬取zol桌面壁纸,批量下载图片. 项目准备 软件:Pycharm 第三方库:requests,fake_useragent,re,lxml 网站地址:http://desk.zol.com.c ...

最新文章

  1. “去哪儿网”2015春招前端面试题
  2. XML 学习 (3)
  3. 详解rsync算法--如何减少同步文件时的网络传输量
  4. 超融合和服务器关系_超融合与传统服务器区别
  5. 左右伸缩_SSFB梳齿型桥梁伸缩缝安装步骤及使用特性
  6. A1137 | 录数据查询模拟
  7. android没有实现glFlush或glFinish
  8. Hybrid App是如何实现网页语言与程序语言的混合?谁占主体?
  9. android 动画库
  10. python3d旋转相册,用HTML+CSS代码制作3D旋转相册
  11. 六大设计原则之SRP
  12. 技术架构图-Java技术栈
  13. word多级目录设置和自动生成目录
  14. 苹果公司发布iPhone 5s和iPhone 5c
  15. Python中time.sleep(0.001)真的只等待1毫秒吗?
  16. java后台实现CKFinder2.3版本+阿里OSS存储
  17. 银联收单清算体系及处理流程
  18. C语言 金明的预算方案(动态规划):金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用 的很宽敞的房间。
  19. 为知笔记Markdown笔记里的插入代码怎么实现/为知笔记怎怎么插入代码段
  20. dynamic 365 前端操作

热门文章

  1. 互联网晚报 | 8月25日 星期三 | 拼多多年度活跃买家数达8.5亿;钉钉推出首个数字工牌产品“钉工牌”;小度科技完成B轮融资...
  2. 航空软件静态测试标准,静态试验
  3. 焊接LQFP48 和 LQFP64 封装的芯片的记录
  4. Redis 跳跃表原理
  5. TiDB 重要监控指标详解
  6. 射频芯片基础知识科普
  7. 嵌入式入门之路坎坷但无比的有趣 心得交流3
  8. android raw获取uri_音频-获取存储在android的res / raw文件夹中的.mp3文件的URI
  9. 论理想的AR/VR广告应该什么样?
  10. 天猫11.11:搜索引擎实时秒级更新