1,下载网页单幅图片到本地文件夹
# -* - coding: UTF-8 -* - #!/usr/bin/python #下载网页图片到本地文件夹 import os,urllib2,urllib #设置下载后存放的本地路径"E:\img\1.jpg" path=r'E:\img' file_name=r'1.jpg' dest_dir=os.path.join(path,file_name) #设置链接的路径 url="http://pic3.nipic.com/20090518/2662644_083611033_2.jpg" #定义下载函数downLoadPicFromURL(本地文件夹,网页URL) def downLoadPicFromURL(dest_dir,URL): try: urllib.urlretrieve(url , dest_dir) except: print '\tError retrieving the URL:', dest_dir #运行 downLoadPicFromURL(dest_dir,url)
2,下载网页一楼多幅照片到本地文件夹
# -* - coding: UTF-8 -* - #!/usr/bin/python #下载网页所有图片到本地文件夹 import os,urllib2,urllib import re,urllib2 def getPage(url): '''下载文件html代码,找出一楼的核心代码''' opener = urllib2.build_opener() #不加头信息则出现403错误和乱码 opener.addheaders = [('User-agent', 'Mozilla/5.0')]; htmlAll = opener.open( url ).read() reg1Floor = '<div class="msgfont">(.*?)</div>' html = re.search(reg1Floor,htmlAll) html = html.group() #文件保存编码和文件编辑编码都是utf-8,所以decode一次,不然会出现乱码,但是不影响结果。 return html.decode('utf-8') def getImg(url): '''从核心代码中照图图片地址,并且下载保存、命名''' pageHtml = getPage(url) #找到所有图片地址 regImg = '<img src="(.*?)" alt="" />' imglist = re.findall(regImg,pageHtml) dir = r'E:\img' #print imglist for index in xrange(0,len(imglist)): picname = str(index+1) + '.jpg' finename = os.path.join(dir,picname) urllib.urlretrieve(imglist[index], finename) print finename + ' ok!' if __name__ == '__main__': getImg('http://topic.csdn.net/u/20101013/11/024465A6-8E16-444C-9A09-DD374D29044C.html')
3,文摘
利用Python抓取和解析网页(上)
http://tech.chinaunix.net/a2009/0707/601/000000601864.shtml
对搜索引擎、文件索引、文档转换、数据检索、站点备份或迁移等应用程序来说,经常用到对网页(即HTML文件)的解析处理。事实上,通过Python语言提供的各种模块,我们无需借助Web服务器或者Web浏览器就能够解析和处理HTML文档。
import urlparse #不能运行,只是示例 parsedTuple = urlparse.urlparse("http://www.google.com/search?hl=en&q=urlparse&btnG=Google+Search") unparsedURL = urlparse.urlunparse((URLscheme,URLlocation, URLpath, '', '', '')) newURL = urlparse.urljoin(unparsedURL,"/module-urllib2/request-objects.html")函数urlparse(urlstring [, default_scheme [, allow_fragments]])的作用是将URL分解成不同的组成部分,它从urlstring中取得URL,并返回元组 (scheme, netloc, path, parameters, query, fragment)。注意,返回的这个元组非常有用,例如可以用来确定网络协议(HTTP、FTP等等 )、服务器地址、文件路径,等等。