1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > [python 爬虫]Python爬虫抓取马蜂窝游记的照片 基于xpath

[python 爬虫]Python爬虫抓取马蜂窝游记的照片 基于xpath

时间:2021-09-03 03:56:04

相关推荐

[python 爬虫]Python爬虫抓取马蜂窝游记的照片 基于xpath

之前都只是使用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

以后屏保就不要用系统默认的啦。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。