website = raw_input('website: ')
with open('words.txt', 'r+') as arquivo:
    for lendo in arquivo.readlines():
        msmwebsite = website + lendo
        try:
            abrindo = urllib2.urlopen(msmwebsite)
            abrindo2 = abrindo.read()           

        except URLError as e:
            pass

        if abrindo.code == 200:
            palavras = ['registration', 'there is no form']
            for palavras2 in palavras:
                if palavras2 in abrindo2:
                    print msmwebsite, 'up'

                else:
                    pass

        else:
            pass

Działa, ale z jakiegoś powodu niektóre strony internetowe otrzymałem ten błąd:

if abrindo.code == 200:
NameError: name 'abrindo' is not defined

Jak to naprawić? .................................................. .................................................. .................................................. .................................

1
Milbol 4 grudzień 2013, 16:45

2 odpowiedzi

Najlepsza odpowiedź

Wymień pass za pomocą continue. A przynajmniej niektóre logowanie błędów, po cichu pomijasz błędne linki.

W przypadku, gdy żądanie spowodowało URLError, nie jest zdefiniowany żadna zmienna {x1}}, stąd błąd.

7
alko 4 grudzień 2013, 12:47

abrindo jest tworzony tylko w bloku try. Nie będzie dostępny, jeśli zostanie wykonany blok catch. Aby to naprawić, przesuń blok kodu

if abrindo.code == 200:

Wewnątrz bloku try. Jeszcze jedna sugestia, jeśli nie robisz nic w części else, zamiast wyraźnie pisać, że z pass, po prostu je usuń.

2
thefourtheye 4 grudzień 2013, 12:52