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文档。
一、解析URL
通过Python所带的urlparse模块,我们能够轻松地把URL分解成元件,之后,还能将这些元件重新组装成一个URL。当我们处理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等等 )、服务器地址、文件路径,等等。
函数urlunparse(tuple)的作用是将URL的组件装配成一个URL,它接收元组(scheme, netloc, path, parameters, query, fragment)后,会重新组成一个具有正确格式的URL,以便供Python的其他HTML解析模块使用。
函数urljoin(base, url [, allow_fragments]) 的作用是拼接URL,它以第一个参数作为其基地址,然后与第二个参数中的相对地址相结合组成一个绝对URL地址。函数urljoin在通过为URL基地址附加新的文件名的方式来处理同一位置处的若干文件的时候格外有用。需要注意的是,如果基地址并非以字符/结尾的话,那么URL基地址最右边部分就会被这个相对路径所替换。比如,URL的基地址为Http://www.testpage.com/pub,URL的相对地址为test.html,那么两者将合并成http://www.testpage.com/test.html,而非http://www.testpage.com/pub/test.html。如果希望在该路径中保留末端目录,应确保URL基地址以字符/结尾。