代碼如下:
#coding=gbk
from xml.dom import minidom,Node
import urllib2,re,os
def readsrc(src):
try:
url = urllib2.urlopen(src)
content = url.read()#.decode('utf-8')
return content
except:
print 'error'
return None
def pictype(content):
'''
通過抓取網站導航欄,獲得網站的圖片類型
返回列表,每個列表元素為一個字典,addr代表圖片類型對于的鏈接,name代表圖片類型的名稱
錯誤會返回None
'''
p = re.compile(r'<ul>(.*)</ul>',re.S)
r=p.search(content)
if r:
content=r.group()
else:
print None
p = re.compile(r'<li/s*.*?>/s*<a href *= *"(?P<addr>.*?)">(?P<name>.*?)/s*</a>/s*</li>')
l = [i.groupdict() for i in p.finditer(content)]
l=l[1:]
if len(l):return l
else:return None
def pageinfo(src):
'''
獲取一個頁面的詳細信息
返回對于的字典列表
name:圖片的名字
cutaddr:縮小的瀏覽圖
picaddr:實際圖片的地址
'''
d=os.path.split(src)[0]
try:
url = urllib2.urlopen(src)
content = url.read()#.decode('utf-8')
except:
print 'error'
return None
#find all the pictures info in a page
p = re.compile(r'<ul.*?>(.*?)</ul>',re.S)
r = p.findall(content)
if not r: return None
r = r[1]
p = re.compile(r'<li><a href="(?P<picaddr>.*?)".*?><img.*?alt="(?P<name>.*?)" *src="(?P<cutaddr>.*?)" */></a>.*?</li>')
l = [ i.groupdict() for i in p.finditer(r)]
for i in l:
i['picaddr']=d+'/'+i['picaddr']
if len(l): return l
else: return None
def nextpageaddr(src):
'''
從頁面的html源碼中獲取下一個頁面地址的名稱,最后一頁返回None
'''
新聞熱點
疑難解答