404 вызывает зависание запроса urllib в блоке try catch - PullRequest
0 голосов
/ 25 февраля 2020

Я перебираю несколько страниц с одним и тем же URL-адресом, за исключением номера в конце. Однако, когда он достигает 404, он останавливает программу, хотя я ловлю исключение в блоке try. Я что-то здесь упускаю? Вот мой код Программа зависает при нажатии https://www.tenable.com/plugins/nessus/14587

import bs4 as bs
from urllib.request import urlopen, Request
import urllib

ID = 14580

while ID < 132734:

    #ID == 14391
    ID == 14580
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.3'}
    reg_url = "https://www.tenable.com/plugins/nessus/" + str(ID)
    req = Request(url=reg_url, headers=headers) 

    try:
        source = urlopen(req).read()
    except urllib.error.HTTPError as e:
            if e.getcode() == 404: # check the return code
                continue    
            raise
    soup = bs.BeautifulSoup(source,'lxml')

    print(ID)
    print(reg_url)
    print(soup.title.string)
    ID += 1

ОБНОВЛЕННЫЙ КОД РАБОТЫ:

import bs4 as bs
from urllib.request import urlopen, Request
import urllib


ID = 14580

while ID < 132734:

    #ID == 14391
    ID == 14580
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.3'}
    reg_url = "https://www.tenable.com/plugins/nessus/" + str(ID)
    req = Request(url=reg_url, headers=headers) 



    try:
        source = urlopen(req).read()
    except urllib.error.HTTPError as e:
            if e.getcode() == 404: # check the return code
                ID +=1
                continue    
            raise
    soup = bs.BeautifulSoup(source,'lxml')

    print(ID)
    print(reg_url)
    print(soup.title.string)
    ID += 1

1 Ответ

0 голосов
/ 25 февраля 2020

Я добавил еще один инкремент ID в блоке исключений, как видно из обновленного кода, и теперь он работает нормально

...