之前都只是使用urllib和urllib2这两个类库,接下来要发掘更多好用的工具了,比如这个xpath,对于分析HTML的网页结构实在是太方便。
http://blog.csdn.net/freeking101/article/details/52614291
http://www.w3school.com.cn/xpath/index.asp
大家可以参考一下这个网址学习一下xpath的使用方法,好了下面就说回我的代码实现
首先观察一下马蜂窝的游记HTMLsource
然后就可以写出获得图片地址和保存图片的函数
def writePhoto(soup,path):
print u"开始保存图片"
img=soup.xpath('//img/@data-src')
total_img=0
for myimg in img:
total_img += 1
print myimg
urllib.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 re
import urllib
import urllib2
import os
from lxml import etree
def writePhoto(soup,path):
print u"开始保存图片"
img=soup.xpath('//img/@data-src')
total_img=0
for myimg in img:
total_img += 1
print myimg
urllib.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:"+result
if result:
return result
else:
return None
def mkdir(path):
path=path.strip()
isExists=os.path.exists(path)
if not isExists:
print u"创建了名为",path,u"的文件夹"
os.makedirs(path)
return True
else:
print u"名为",path,u"的文件夹已经创建"
return False
def 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 url
request=urllib2.Request(url)
response=urllib2.urlopen(url)
soup = etree.HTML(response.read().decode('utf-8'))
print u"连接成功"
start(soup,path)
来看一下结果吧
保存成独立的文件夹
图片5
图片6
以后屏保就不要用系统默认的啦。