今天写了一个脚本用来爬取ZOL桌面壁纸网站的高清图片;

链接:http://desk.zol.com.cn/1920x1080/

本程序只爬了美女板块的图片,若要下载其他板块,只需修改程序中的”meinv“即可

代码如下:

#coding=utf-8
import urllib
import re
import time
class Spider:
baseUrl='http://desk.zol.com.cn/'
pic_index=0
itemGroupPic=[]
def __init__(self,page_count):
time.sleep(1)
url=self.baseUrl+"meinv/1920x1080/"
for i in range(10, page_count):
time.sleep(5)
html=self.getHtml(url,i)
getbi=self.getPageImageGroup(html)
bizhi_url=self.getbizhiurlList(getbi) def getHtml(self,url,page_index):
url=url+str(page_index)+".html"
page = urllib.urlopen(url)
html = page.read()
return html def getPageImageGroup(self,html):
reg=r'<a class="pic" href="/bizhi/.*?.html'
imgre=re.compile(reg)
imagelist=re.findall(imgre,html)
return imagelist def getbizhiurlList(self,imagelist):
for iurl in imagelist:
reg=r'bizhi/.*?.html'
imgre=re.compile(reg)
itmeimageurl=re.findall(imgre,iurl)
self.itemGroupPic.append(itmeimageurl) def GetCurrentUrlAndDownload(self,url):
page = urllib.urlopen(url)
html = page.read() #read()出来的文本和网页右键源代码有点出入,这里需要优化
reg=r'<img id="bigImg" src="http://.*.jpg"'
imgre=re.compile(reg)
urllist=re.findall(imgre,html)
for _u in urllist:
reg1=r'http://.*.jpg'
imgre1=re.compile(reg1)
itmeimageurl=re.findall(imgre1,_u)
print u'正在下载'+str(self.pic_index)+u'图片'
#D:\PictureAvi目录要事先创建好
urllib.urlretrieve(itmeimageurl[0],'D:\PictureAvi\%s.jpg' % self.pic_index)
self.pic_index+=1
#获取当前页面的url,next_html
next_reg=r'<a id="pageNext" class="next" href=".*.html"'
next_imgre=re.compile(next_reg)
next_urllist=re.findall(next_imgre,html)
if(len(next_urllist)==0):
return ""
#获取真正的next_html
next_reg_child=r'bizhi.*?.html'
next_imgre_child=re.compile(next_reg_child)
real_url=re.findall(next_imgre_child,next_urllist[0])
return real_url[0] def MatchUrl(self,imagelist):
for imgurl in imagelist:
url=self.baseUrl+imgurl[0]
next_url=self.GetCurrentUrlAndDownload(url)
#递归获取下一个url
while(next_url != ''):
_itme_next_url=self.baseUrl+next_url
next_url=self.GetCurrentUrlAndDownload(_itme_next_url) if __name__ == '__main__':
spider = Spider(15) spider.MatchUrl(spider.itemGroupPic)
print u'结束下载'

运行结果如下:

运行环境是py2.7,原理很简单,并没有用到类似scrapy这样的框架,也没用什么动态获取

1.通过urllib获取网页源代码

2.找到规律,通过正则表达式找到url

3.用urllib下载到本地文件

未完待续。。。。。

Python 爬取高清桌面壁纸的更多相关文章

  1. Python 爬取 "王者荣耀.英雄壁纸" 过程中的矛和盾

    1. 前言 学习爬虫,最好的方式就是自己编写爬虫程序. 爬取目标网站上的数据,理论上讲是简单的,无非就是分析页面中的资源链接.然后下载.最后保存. 但是在实施过程却会遇到一些阻碍. 很多网站为了阻止爬 ...

  2. python3爬取高清壁纸(1)

    这次爬取的目标是:美桌网首页 > 桌面壁纸 > 卡通动漫 类别下的壁纸. 我们先随机选取一个专辑来爬(http://www.win4000.com/wallpaper_detail_545 ...

  3. python3爬取高清壁纸(2)

    上次只是爬取一个专辑的图片,这次要爬取一整个页面的所有专辑的图片. 在上次的代码的基础上进行修改就行了,从专辑的索引页面开始,爬取该页面上所有的专辑的链接,再套用上次的代码就行了. 若要爬取多个页面只 ...

  4. python爬取高匿代理IP(再也不用担心会进小黑屋了)

    为什么要用代理IP 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那么针对这三类人 ...

  5. python 爬取王者荣耀高清壁纸

    代码地址如下:http://www.demodashi.com/demo/13104.html 一.前言 打过王者的童鞋一般都会喜欢里边设计出来的英雄吧,特别想把王者荣耀的英雄的高清图片当成电脑桌面 ...

  6. 初识python 之 爬虫:爬取某网站的壁纸图片

    用到的主要知识点:requests.get 获取网页HTMLetree.HTML 使用lxml解析器解析网页xpath 使用xpath获取网页标签信息.图片地址request.urlretrieve ...

  7. Python爬取视频指南

    摘自:https://www.jianshu.com/p/9ca86becd86d 前言 前两天尔羽说让我爬一下菜鸟窝的教程视频,这次就跟大家来说说Python爬取视频的经验 正文 https://w ...

  8. Python 爬取所有51VOA网站的Learn a words文本及mp3音频

    Python 爬取所有51VOA网站的Learn a words文本及mp3音频 #!/usr/bin/env python # -*- coding: utf-8 -*- #Python 爬取所有5 ...

  9. python爬取网站数据

    开学前接了一个任务,内容是从网上爬取特定属性的数据.正好之前学了python,练练手. 编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了. 问题要从文字的编码讲 ...

随机推荐

  1. 廖雪峰Java12maven基础-1maven入门-1maven介绍

    1.Java项目: * 1.1.首先确定引入哪些依赖包,如commons-logging, log4j, selenium * 1.2.确定项目的目录结构 * 1.3.配置环境:如JDK的版本号 * ...

  2. LUOGU P1438 无聊的数列 (差分+线段树)

    传送门 解题思路 区间加等差数列+单点询问,用差分+线段树解决,线段树里维护的就是差分数组,区间加等差数列相当于在差分序列中l位置处+首项的值,r+1位置处-末项的值,中间加公差的值,然后单点询问就相 ...

  3. CLOSE_WAIT问题讨论

    1.https://cloud.tencent.com/developer/article/1347610 2.https://blog.huoding.com/2016/01/19/488 3.ht ...

  4. CoreData手动创建托管对象子类时报错

    1.具体问题 手动创建CoreData,在进行创建托管对象子类时出现报错如图: 2.解决方法 当使用CoreData时,Xcode自动管理实体类,文件都放在Derived Data文件夹中: 所以不需 ...

  5. Excel 2016在大数据分析领域有了很多的改善

    Excel 2016在大数据分析领域有了很多的改善 通常,我们会把大数据分析的整个过程分为五个阶段: 获取获取,数据分析,可视化,发布报告,应用报告. 在获取数据方面,Excel 2016相对Exce ...

  6. Ubuntu安装Maven(转)

    原文地址:http://my.oschina.net/hongdengyan/blog/150472 一.环境说明: 操作系统:Ubuntu 14.10(64位) maven:apache-maven ...

  7. 关于MQ 消息队列的通俗理解和 rabbitMQ 使用

    消息队列,一听很高大上,现在很多分布式系统都在用这个消息中间件 网上一搜, 说的都是些原理. 说下我的通俗理解, 你网上买了, 快递员给你投递, 会出现什么问题呢? 1  你不定时在家, 快递员 来了 ...

  8. 11-3-while

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. Tomcat Add and Remove 项目时提示 Project facet Java version 1.8 is not supported 错误

    原因:项目的jdk和tomcat的jdk版本不同 将eclipse-preference-server-runtime environments 点击你要用的tomcat 点击 edit-jre选择和 ...

  10. linux crontab定时任务运行shell脚本(shell执行sql文件)

    https://www.cnblogs.com/tiankongjava/p/6106743.html 今天做个linux定时任务(每晚12点把表汇总). 顺便写个博客记录一下~~ 为什么用linux ...