使用Python检查URL

时间:2017-02-04 14:51:36

标签: python url

我正在尝试测试整个网站列表,看看网址是否有效,我想知道哪些网址没有。

import urllib2

filename=open(argfile,'r')
f=filename.readlines()
filename.close()

def urlcheck() :
    for line in f:
        try:
            urllib2.urlopen()
            print "SITE IS FUNCTIONAL"
        except urllib2.HTTPError, e:
            print(e.code)
        except urllib2.URLError, e:
            print(e.args)
urlcheck()

5 个答案:

答案 0 :(得分:1)

你必须传递网址

def urlcheck() :
    for line in f:
        try:
            urllib2.urlopen(line)
            print line, "SITE IS FUNCTIONAL"
        except urllib2.HTTPError, e:
            print line, "SITE IS NOT FUNCTIONAL"
            print(e.code)
        except urllib2.URLError, e:
            print line, "SITE IS NOT FUNCTIONAL"
            print(e.args)
        except Exception,e:
            print line, "Invalid URL"

需要考虑的一些边缘案例或事项

错误代码和HTTPError

的一点点
  

来自服务器的每个HTTP响应都包含一个数字“状态代码”。   有时状态代码表示服务器无法执行   满足要求。默认处理程序将处理其中一些   回复(例如,如果响应是“重定向”)   请求客户端从其他URL获取文档,   urllib2将为你处理)。对于那些无法处理的人,请记住   会引发HTTPError。典型错误包括'404'(页面不是   发现),'403'(请求禁止)和'401'(身份验证   必需的)。

即使引发了HTTPError,您也可以检查错误代码

  • 因此,有时即使URL有效且可用,也可能会引发带有代码403401等的HTTPError。
  • 由于临时5xx
  • ,有时有效的网址会提供ServerErrors

答案 1 :(得分:0)

我建议您使用if($(document).scrollTop() >= 3 && mustSlideRight) { }else if ($(document).scrollTop() <=2 && mustSlideLeft){} 库。

requests

答案 2 :(得分:0)

您必须将url作为参数传递给urlopen函数。

import urllib2

filename=open(argfile,'r')
f=filename.readlines()
filename.close()

def urlcheck() :
    for line in f:
        try:
            urllib2.urlopen(line) # careful here
            print "SITE IS FUNCTIONAL"
        except urllib2.HTTPError, e:
            print(e.code)
        except urllib2.URLError, e:
            print(e.args)
urlcheck()

答案 3 :(得分:0)

{{1}}

答案 4 :(得分:0)

我可能会这样写:

import urllib2

with open('urls.txt') as f:
    urls = [url.strip() for url in f.readlines()]

def urlcheck() :
    for url in urls:
        try:
            urllib2.urlopen(url)
        except (ValueError, urllib2.URLError) as e:
            print('invalid url: {}'.format(url))

urlcheck()
OP对原始实施的一些改变:

  • 使用上下文管理器打开/关闭数据文件
  • 从文件
  • 中读取URL中的换行符
  • 使用更好的变量名称
  • 切换到更现代的异常处理方式
  • 还会捕获格式错误的网址
  • 的ValueError
  • 显示更有用的错误消息

示例输出:

$ python urlcheck.py 
invalid url: http://www.google.com/wertbh
invalid url: htp:/google.com
invalid url: google.com
invalid url: https://wwwbad-domain-zzzz.com