检查在Python脚本中的URL输入是否有效

问题描述:

我在这里有一个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

以下应该可以帮助您 -

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

也许这个片段可以帮助你理解为什么你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