也许我的问题标题与问题内容不同。
statuscode = []
statuscode.append(200)
for x in find_from_sublister(hostname):
x2 = x.strip()
url = "http://"+ x2
try:
req = requests.get(url)
req1 = str(req.status_code) + " " + str(url) + '\n'
req2 = str(req.status_code)
req3 = str(url)
dict = {req2 : req3}
print " \n " + str(req1)
except requests.exceptions.RequestException as e:
print "Can't make the request to this Subdomain " + str(url) + '\n'
for keys, values in dict.iteritems():
print "finding the url's whose status code is 200"
if keys == statuscode[0]:
print values
else:
print "po"
我正在使用代码执行以下操作。
for x in find_from_sublister(hostname):
注意:find_from_sublister(hostname)是一个从子列表中查找子域的函数。
print " \n " + str(req1)
[一切顺利,但问题从这里开始]
现在我想要的是分隔有200个状态代码的网址。
所以我听说可以通过在python中使用字典来实现。所以,我尝试使用字典。如您所见dict = {req2 : req3}
现在我还列出了一个值为200
然后我将键与索引列表进行比较。这里keys == statuscode[0]
如果它们匹配,那么它应该打印所有具有200个状态代码的URL。
但我得到的结果如下,
finding the url's whose status code is 200
po
您会看到值po
的其他参数值
else:
print "po"
现在问题是为什么我得到这个其他值为什么不是具有状态代码200的URL?
希望我能清楚地解释你。等待有人跟我说话。谢谢
注意:我正在使用Python 2.7 ver。
答案 0 :(得分:0)
在你的情况下,你甚至不需要字典。
我尝试尽可能地清理代码,包括更多描述性变量名称(同样,覆盖像dict
这样的内置名称也是一个坏主意。)
urls_returning_200 = []
for url in find_from_sublister(hostname):
url = "http://" + url.strip()
try:
response = requests.get(url)
if response.status_code == 200:
urls_returning_200.append(url)
print " \n {} {}\n".format(response.status_code, url)
except requests.exceptions.RequestException as e:
print "Can't make the request to this Subdomain {}\n".format(url)
print "finding the url's whose status code is 200"
print urls_returning_200