纪念我的第一个Python爬虫——图片

学习Python第四天,看书上的理论知识看的晕晕乎乎的,一大堆的文字涌进脑海。代码这种东西嘛,还是得要敲。于是就想着尝试着写一个爬虫试试看,爬爬图片。花了我近两个小时啊,才写出这玩意儿,就爬爬豆瓣的图片。

先给看个界面:

上代码:

#coding:utf-8
import urllib
import re,wx
app=wx.App()
win=wx.Frame(None,title="图片下载",size=(410,335))
bkg=wx.Panel(win)

urlText=wx.StaticText(bkg,label="目标网址:")
submmitButton=wx.Button(bkg,label="提交")
imgText=wx.StaticText(bkg,label="保存图片的位置:")
urlname=wx.TextCtrl(bkg)
imgname=wx.TextCtrl(bkg)
text=wx.TextCtrl(bkg)

first=wx.BoxSizer()
first.Add(urlText,proportion=0,flag=wx.RIGHT,border=5)
first.Add(urlname,proportion=1,flag=wx.EXPAND)
first.Add(submmitButton,proportion=0,flag=wx.LEFT,border=5)

second=wx.BoxSizer()
second.Add(imgText,proportion=0,flag=wx.RIGHT,border=5)
second.Add(imgname,proportion=1,flag=wx.EXPAND)

all=wx.BoxSizer(wx.VERTICAL)
all.Add(first,proportion=1,flag=wx.EXPAND|wx.ALL,border=5)
all.Add(second,proportion=1,flag=wx.EXPAND|wx.ALL,border=5)
all.Add(text,proportion=5,flag=wx.EXPAND|wx.ALL,border=5)
bkg.SetSizer(all)
win.Show()

def getHtml(url):
	page=urllib.urlopen(url)
	html=page.read()
	return html
def getImg(html):
	reg=r'data-origin="(.+?\.jpg)"'
	imgre=re.compile(reg)
	imglist=re.findall(imgre,html)
	return imglist
def saveImg(place,imglist):
	x=0
	for imgurl in imglist:
		print '正在下载第',x,'个'
		print imgurl
		urllib.urlretrieve(imgurl,place+'\%s.jpg'%x)
		x+=1
	print '下载完成'
def submmit(event):
	imglist=getImg(getHtml(urlname.GetValue()))
	print len(imglist)
	saveImg(imgname.GetValue(),imglist)

submmitButton.Bind(wx.EVT_BUTTON,submmit)

app.MainLoop()
写程序的时候一开始,运行下来图片是都下下来了,但是大部分的图片都是不能看的。以为是自己的代码写的有问题,函数之类的用错了,看代码,调代码,搞了半天还是一样的。最后想到可能是正则表达式的问题,我原先写的是
reg=r'src="(.+?\.jpg)"'
再去看了一下www.douban.com的源代码(因为我是拿豆瓣的网页做练习的),发现豆瓣的图片原码都是 img src =" http://img3.douban.com/pics/blank.gif " data-origin =" http://img3.douban.com/view/photo/albumcover/public/p2243992540.jpg "这种形式的,于是把正则表达式改了,改成现在这样的。运行,查看图片,没问题。心情好啊。其实正则表达式还应该再修改的,修改成符合所有情况的,还可以改进。


毕竟是自己的第一个爬虫程序,虽然粗糙,应该是很粗糙,对很多人来说其实很容易,但是成就GET。写完有很多想法等我去实践。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值