2013-12-10 154 views
0

我在這裏有一個python網站抓取工具腳本,我需要通過測試網站連接來驗證它的網址。任何人都可以幫我在我的代碼中實現這個嗎?檢查在Python腳本中的URL輸入是否有效

這裏是我的代碼:

import sys, urllib 

while True: 
    try: 
     url= raw_input('Please input address: ') 
     webpage=urllib.urlopen(url) 
     print 'Web address is valid' 
     break 
    except: 
     print 'No input or wrong url format usage: http://wwww.domainname.com/ ' 
     print 'Please try again' 
def wget(webpage): 
     print '[*] Fetching webpage...\n' 
     page = webpage.read() 
     return page  
def main(): 
    sys.argv.append(webpage) 
    if len(sys.argv) != 2: 
     print '[-] Usage: webpage_get URL' 
     return 
    print wget(sys.argv[1]) 

if __name__ == '__main__': 
    main() 

編輯: 我這裏有一個代碼,我從另一個計算器後提取。此代碼有效,我只是希望它能夠集成到我的代碼中。我試圖整合自己,但是卻得到了錯誤。任何人都可以幫我做到這一點? 下面的代碼:

from urllib2 import Request, urlopen, URLError 
req = Request('http://jfvbhsjdfvbs.com') 
try: 
    response = urlopen(req) 
except URLError, e: 
    if hasattr(e, 'reason'): 
     print 'We failed to reach a server.' 
     print 'Reason: ', e.reason 
    elif hasattr(e, 'code'): 
     print 'The server couldn\'t fulfill the request.' 
     print 'Error code: ', e.code 
else: 
    print 'URL is good!' 
+1

不僅外觀漂亮,你在調用main之前執行'while True'。 – Hyperboreus

+0

我寧願檢查響應代碼,看看[這](http://stackoverflow.com/questions/1140661/python-get-http-response-code-from-a-url)後 –

+0

是的,這就是我需要但我不知道如何在我的代碼中實現它。所以即時通訊尋求幫助,如果任何人都可以幫助我做到這一點 – user3034404

回答

0

以下應該可以幫助您 -

visited = [] 

in while loop - 
in try: 
    url= raw_input('Please input address: ') 
    if url in visited: 
     print "Already visited. Continue" 
    visited.append(url) 
    webpage=urllib.urlopen(url) 
    [...] 
+0

我不認爲這是我所需要的。我需要一個代碼來檢查用戶連接到給定的URL – user3034404

1

也許這個片段可以幫助你理解爲什麼你mainwhile後執行:

print 'Checkpoint Alpha' 

while True: 
    print 'Checkpoint Bravo' 
    if raw_input ('x for break: ') == 'x': break 

print 'Checkpoint Charlie' 

def main(): 
    print 'Checkpoint Foxtrott' 

print 'Checkpoint Delta' 

if __name__ == '__main__': 
    print 'Checkpoint Echo' 
    main() 
    print 'Checkpoint Golf' 

print 'Checkpoint Hotel' 
+0

+ 1爲軍事代碼的使用:) –

+1

@KDawG你可以把軍官從空軍,但你不能拿空軍走出官員。發現目標! – Hyperboreus