之前都只是使用urllib和urllib2这两个类库,接下来要发掘更多好用的工具了,比如这个xpath,对于分析HTML的网页结构实在是太方便。
/freeking101/article/details/52614291
/xpath/index.asp
大家可以参考一下这个网址学习一下xpath的使用方法,好了下面就说回我的代码实现
首先观察一下马蜂窝的游记HTMLsource
图片1
然后就可以写出获得图片地址和保存图片的函数
def writePhoto(soup,path):print u"开始保存图片"img=soup.xpath('//img/@data-src')total_img=0for myimg in img:total_img += 1print myimgurllib.urlretrieve(myimg,path+'%s.jpg'%total_img)print u"已经保存第",total_img,u"张照片"print u"总共保存第",total_img,u"张照片"
其他的基本上和以前的一样没什么好说的,但是我发现一个问题就是xpath不是万能,可能我还没深入了解它的使用吧,但是我在获取游记的背景音乐地址却没能成功
图片2
接下来是源码
# -*- coding: cp936 -*-__author__ = 'Thor'# -*- coding:utf-8 -*-import reimport urllibimport urllib2import osfrom lxml import etreedef writePhoto(soup,path):print u"开始保存图片"img=soup.xpath('//img/@data-src')total_img=0for myimg in img:total_img += 1print myimgurllib.urlretrieve(myimg,path+'%s.jpg'%total_img)print u"已经保存第",total_img,u"张照片"print u"总共保存第",total_img,u"张照片"def getTitle(soup):result=soup.xpath('//div/h1/text()')[0]result=re.sub('\\n','',result)result=re.sub('\.','',result)print "title:"+resultif result:return resultelse:return Nonedef mkdir(path):path=path.strip()isExists=os.path.exists(path)if not isExists:print u"创建了名为",path,u"的文件夹"os.makedirs(path)return Trueelse:print u"名为",path,u"的文件夹已经创建"return Falsedef start(html,path):print u"kkkkkkkkkkkkkkkkkkk"title=getTitle(soup)path=path+title+"\\"mkdir(path)writePhoto(soup,path)print u"请输入一个马蜂窝的游记网址"url=(raw_input())path="C:\Users\Administrator\Desktop\Mafengwo\\"print urlrequest=urllib2.Request(url)response=urllib2.urlopen(url)soup = etree.HTML(response.read().decode('utf-8'))print u"连接成功"start(soup,path)
来看一下结果吧
图片3
图片4
保存成独立的文件夹
图片5
图片6
以后屏保就不要用系统默认的啦。