您提出问题的方式有点令人困惑,但如果我理解正确,您所做的所有尝试都是使用 urllib2 测试 url 是否有效,以及是否将 url 写入文件?如果这是正确的,那么以下应该可以工作。
import urllib2
f = open("url_file.txt","a+")
urlhere = "http://www.google.com"
print "for url: " + urlhere + ":"
try:
fileHandle = urllib2.urlopen(urlhere)
data = fileHandle.read()
fileHandle.close()
f.write(urlhere + "\n")
f.close()
print "It exists"
except urllib2.URLError, e:
print 'PAGE 404: It Doesnt Exist', e
如果您想测试多个 url 但不想编辑 python 脚本,您可以通过键入来使用以下脚本python python_script.py "http://url_here.com"
。这可以通过使用 sys 模块实现,其中 sys.argv[1] 等于传递给 python_script.py 的第一个参数。在这个例子中是 url (' http://url_here.com ')。
import urllib2,sys
f = open("url_file.txt","a+")
urlhere = sys.argv[1]
print "for url: " + urlhere + ":"
try:
fileHandle = urllib2.urlopen(urlhere)
data = fileHandle.read()
fileHandle.close()
f.write(urlhere+ "\n")
f.close()
print "It exists"
except urllib2.URLError, e:
print 'PAGE 404: It Doesnt Exist', e
或者,如果您真的想让您的工作变得轻松,您可以通过在命令行python python_script http://url1.com,http://url2.com
中键入以下内容来使用以下脚本,您希望测试的所有 url 都用逗号分隔,没有空格。
import urllib2,sys
f = open("url_file.txt","a+")
urlhere_list = sys.argv[1].split(",")
for urls in urlhere_list:
print "for url: " + urls + ":"
try:
fileHandle = urllib2.urlopen(urls)
data = fileHandle.read()
fileHandle.close()
f.write(urls+ "\n")
print "It exists"
except urllib2.URLError, e:
print 'PAGE 404: It Doesnt Exist', e
except:
print "invalid url"
f.close()
sys.argv[1].split()
如果您不想使用命令行功能,也可以用脚本中的 python 列表替换。希望这对您有所帮助,并祝您的程序好运。
note
使用命令行输入的脚本在 ubuntu linux 上进行了测试,因此如果您使用的是 windows 或其他操作系统,我不能保证它可以按照给出的说明工作,但应该可以。