优美库图片小程序 version1.0

今天制作一个优美库图片小程序,网址http://www.umei.cc/bizhitupian/

爬虫的相关流程:获取目标网址-获取数据-存储数据。下面使该网页的内容:

图片一:

第一步:找到该网站下的便签,找到该标签网页下所有的url,这里的思路是获取该标签下的页数,通过循环拼接所有的url。

对标签下的网页1(<http://www.umei.cc/bizhitupian/diannaobizhi/1.htm>)与网页2(<http://www.umei.cc/bizhitupian/diannaobizhi/2.htm>)进行比较,相信你会发现规律的。如图片2,2.1:

代码段:

import  requests
from lxml import  etree
import  re
from urllib.request import urlretrieve
import  random
dict = {}
img_url = []
img = []headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
def Total_label():'''获取标签并进行分类存放在字典中'''response = requests.get('http://www.umei.cc/bizhitupian/').contenthtml = etree.HTML(response)title = html.xpath("//div[@class='w850 l oh']//a/@title")url = html.xpath("//div[@class='w850 l oh']//a/@href")# 循环镶嵌将标题与url结合index = 0for i in title:dict[i] = url[index]index += 1
# for k, v in dict.items():
#     print(k , v)
# 抓取链接
def Grab(num):'''获取每个标签下的总页数'''url = dict[num]# print(url)response = requests.get(url,headers=headers,timeout=3)# response.encoding = 'utf-8'text = response.content.decode('utf-8')html = etree.HTML(text)pages = html.xpath("//div[@class='NewPages']//ul/li//@href")[-1].split('.')[0]return (int(pages),url)# 获取总页中所有分页的url
def get_paging(url,pages_n):urls = [url+'{}.htm'.format(i) for i in range(1,pages_n+1)]'''获取每个url下的图片链接'''for i in urls:response_time = requests.get(i, headers=headers, timeout=3)# response.encoding = 'utf-8'text = response_time.content.decode('utf-8')html = etree.HTML(text)jpg_url = html.xpath("//div[@class='TypeList']//a/@href")for i in jpg_url:img_url.append(i)

第二步:我们已经有了分页的url,我们再获取图片的url,进行下载即可:

def img_To_obtain():'''图片获取'''# 图片链接 Xpath语法://*[@id="ArticleId60"]/p/a/img/@src# print(img_url)for x in img_url:response = requests.get(x,headers=headers,timeout=3)text = response.content.decode('utf-8')html = etree.HTML(text)'''整站爬,分页,可以通过url进行判断if 页数2 == 网页状态404:只是一张图片该系列有分页'''page_f = html.xpath('//*[@id="ArticleId60"]/p/a/img/@src')for j in page_f:img.append(j)def extract():'''随机获取一张图片'''IMAGE_URL = random.choice(img)The_suffix = IMAGE_URL.split('.')[3]urlretrieve(IMAGE_URL, './image/img1.{}'.format(The_suffix))

主程序部分:

if __name__ == '__main__':print('================欢迎来到图片选择器v1.0=====================')print('''=====================提示信息=============================1:电脑壁纸2:手机壁纸3.动态壁纸。。。。9:可爱壁纸''')Total_label()num = str(input("请输入您的选择:"))'''页数+标题url'''page_n,url = Grab(num)print('%s页数为:%s, url:%s'%(num,page_n,url))get_paging(url,page_n)extract()

结尾:

该程序比较低级,可以说很垃圾,小编自己都感觉很垃圾,有很多没有完善的地方,使用的面向过程的,没有多线程,没有异常处理,代码啰嗦等。

胜在学习思路吧,该网站是没有反爬的,基本网站,但是不要过度的请求,给对方服务器留条活路,后期会把完善的代码重做一期跟大家一起学习。

优美库图片小程序 Version1.0相关推荐

  1. 用云开发搭建的微信答题小程序v1.0

    近来百无聊赖,遂抽空做了一个答题小程序的系列教程,以及分享源码,是用云开发搭建的微信答题小程序v1.0. 界面截图 该答题小程序大致如下图: 结构层级 主要程序由3个界面组成,分别是index,tes ...

  2. 全云端万能小程序_百搜全云端万能门店小程序v4.0.13五端独家2次开发升级独立版...

    百搜全云端五端万能小程序独立版简介: 包含:百度小程序,支付宝小程序,微信小程序,头条小程序,QQ小程序,H5,PC商城. 功能:支持小程序一键上传极速审核,对接微信开放平台发布使用,也可以单独使用开 ...

  3. 抖音壁纸小程序v1.0.2版本功能,新增达人入住功能

    抖音壁纸小程序v1.0.2版本功能 抖音壁纸小程序源代码 此次新增和优化功能如下: 达人入住 达人审核 收益管理 下载壁纸页面UI优化 素材管理 素材上传 新增抖音图片检测接口 消息通知 达人搜索 收 ...

  4. 又是一年立冬时节,消防安全知识答题小程序v3.0千呼万唤始出来

    此去经年,又是一年立冬时节.回首过去,优质的消防安全知识竞答活动小程序v1.0刚出来,就收到了不少好评,我随即把源码分享出来. 当时正值立冬,"雪花飘飘北风萧萧~" 防火安全知识专 ...

  5. 啦啦外卖开源至尊独立稳定版小程序 V43.0+客户端+配送端+商户端多个小程序安装及配置教程

    啦啦外卖开源至尊独立稳定版公众号+小程序 V43.0版系统为独立开源版是一套非常不错的外卖系统,使用过的都知道该系统功能非常强大,是目前外卖平台功能最全的一套系统.最大优势全开源拿来即用,也非常合适做 ...

  6. 微信小程序从0到上线,程序员一个月开发一款小程序实录

    前言:本人从事游戏开发多年,是一名饱受折磨的游戏前端开发人员.游戏这个行业越来越难做,加班越来越严重.正值行业转变之际,听闻微信小程序热火之时,我想偿试一下小程序制作,因此,一个月之后有了这篇文章:微 ...

  7. 啦啦外卖公众号+小程序 V43.0开源至尊独立版+独家用户授权升级+小程序端+APP源码+小程序端VUE源码安装教程

    啦啦外卖跑腿平台开源至尊独立稳定版公众号+小程序 V43.0版系统为独立开源版,最大优势全开源,使用的都知道该系统功能非常强大,是目前外卖平台功能最全的一套系统.拿来即用,也非常合适做二开的朋友,包括 ...

  8. 求职招聘小程序 V4.0.75全解密开源运营版小程序

    简介: 1.多城市招聘平台 2.职位版块 3.人才版块 4.招聘会(支持企业在线报名参加招聘会) 5.职场资讯 6.企业登录(在手机端可操作企业信息编辑.发布职位.查收简历.通知面试) 7.企业VIP ...

  9. 答题活动小程序v3.0

    答题活动小程序v3.0 简介 答题活动小程序v3.0,基于云开发的微信答题小程序,软件架构是微信原生小程序+云开发. 主要包含六大功能模块页面,首页.答题页.结果页.活动规则页.答题记录页.排行榜页. ...

最新文章

  1. java hibernate oracle,Java笔记8:Hibernate连接Oracle
  2. c语言链表p-%3enext,课程设计报告.c语言程序设计.pdf
  3. [COCI2017-2018#5] Karte
  4. 前端学习(2324):angular初步使用
  5. PHP XML操作类 xml2array -- 含节点属性
  6. Java之设计模式详解 (转)
  7. 浙大 PAT b1018
  8. 【观点讨论与支撑】真的是而立之年没有立,以后就没有希望了吗?
  9. java基础47 装饰着模式设计
  10. iOS开发_UI_AutoLayout
  11. Vision Assistant Minimum Scree Resolution
  12. 真正的免费云时代来临,免费1T全能空间提供1T免费全能空间申请,
  13. 2022.11.11 CodeForces1324D Pair of Topics
  14. SQL 身份证获取性别
  15. 年老时最后悔但为时已晚的几件事
  16. 好书分享 《将来的你一定感谢现在拼命的自己》
  17. 为什么高级Android程序员永远不必担心自己的技术过时?
  18. Python中字符串常见操作总结
  19. MacOS下安装及配置Maven
  20. 下载安装指定版本的pandas

热门文章

  1. 怎么设置CAD多段线线宽?CAD多段线线宽设置技巧
  2. Windows 11 新功能 Microsoft Teams
  3. 1.STM32F103-点亮第一颗LED
  4. java学习总结(16.07.16)Random类和BigDecimal类
  5. linux startx无效_LINUX startx命令-用来启动X Window
  6. cad2016的自动修复此计算机,CAD中遇到文件损坏,别着急,这几招能帮你挽回损失...
  7. 用计算机数字唱歌,悬赏跪求计算器各种歌曲数字谱(最好带和音)
  8. Unable to open JDBC Connection for DDL execution
  9. 数字IC后端需要学习什么?需要具备哪些技能?
  10. node文件通过不同的后缀名解析不同的文件类型