祝賀 中華民國 又過生日啦!不過很可惜今天下了整天的雨,早上明明還出大太陽的。
睡到自然醒真是一件開心的事,結果醒來一看時鐘,八點。也只比平常多睡一點而已,看來身體已經習慣了。
總之今天比較優哉,心情好寫程式也不會卡卡的,看了前些日子寫的程式,還真是慘不忍睹...
整理過總算比較像是個程式了!
#! /usr/bin/env python
#-*- coding: utf-8 -*-
import urllib.request
import re
siteMap = []
def alink_to_sitMap( alinkList, targetUrl ):
global siteMap
for x in alinkList :
if re.search( r'^#', x ) : #略過hash
continue
rehostUrl = "^" + targetUrl
if re.search( rehostUrl, x ): #同一domin判斷
if not x in siteMap: #避免重複
siteMap.append( x )
if not re.search( r'^http', x ): #相對路徑
if not x in siteMap: #避免重複
siteMap.append( x )
def get_link( TagList ):
targetList = [ "a" ]
alinkList = []
for y in TagList :
if y[0] in targetList : #尋找<a>標籤
Attr = y[1].split(" ")
for z in Attr:
IgCh = [ '"' , "'" ] #去除前後分號
if re.search( r'^href=' , z ):
if z[5] in IgCh: #判斷是否有分號
alinkList.append( z[6:-1] )
else:
alinkList.append( z[5:] )
return alinkList
def get_tag( data ):
reStr = "<([\w]+) (.*?)>";
reObj = re.compile( reStr.format() )
targetTag = reObj.findall( str( data.decode( "utf-8" ) ) )
TagList = []
for x in targetTag:
TagList.append( x )
return TagList
def get_url_data( targetUrl ):
urlobj = urllib.request.urlopen( targetUrl )
data = urlobj.read()
urlobj.close()
return data
def test():
global siteMap
targetUrl = "http://192.168.1.8/"
siteMap.append( targetUrl )
ptr = 0
while True:
try :
nextUrl = siteMap[ptr]
if not re.search( r'^http',nextUrl ): #相對路徑
#應該要判斷 ../../../ 這種路徑
nextUrl = targetUrl + nextUrl
data = get_url_data( nextUrl )
TagList = get_tag( data )
alinkList = get_link( TagList )
alink_to_sitMap( alinkList, targetUrl )
print( ptr )
print( siteMap )
ptr += 1
except:
print("Is Done!")
break
print( siteMap )
if __name__ == "__main__":
test()
sitemap也算告一個段落了,雖然不是判斷的很完整,也寫得很菜鳥,但是該有的功能不缺﹝是嗎?﹞
放假能早點睡覺嗎?雙十節快樂~
以上,晚安!