iT邦幫忙

DAY 19
1

祝賀 中華民國 又過生日啦!不過很可惜今天下了整天的雨,早上明明還出大太陽的。

睡到自然醒真是一件開心的事,結果醒來一看時鐘,八點。也只比平常多睡一點而已,看來身體已經習慣了。

總之今天比較優哉,心情好寫程式也不會卡卡的,看了前些日子寫的程式,還真是慘不忍睹...

整理過總算比較像是個程式了!

#! /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也算告一個段落了,雖然不是判斷的很完整,也寫得很菜鳥,但是該有的功能不缺﹝是嗎?﹞

放假能早點睡覺嗎?雙十節快樂~

以上,晚安!


上一篇
[Day 18]sitemap-04
下一篇
[Day 20]網站回應速度
系列文
從魯蛇到蟒蛇--網頁(站)靜(動)態分析工具開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言