2015-12-29 1 views
0

Как обходить недостающую ссылку и продолжать очищать хорошие данные?Как обходить недостающую ссылку и продолжать очищать хорошие данные?

Я использую Python2 и Ubuntu 14.04.3.

Я очищаю веб-страницу с несколькими ссылками на связанные данные. Некоторые связанные ссылки отсутствуют, поэтому мне нужен способ обойти недостающие ссылки и продолжить очистку.

Web page 1 
    part description 1 with associated link 
    part description 2 w/o associated link 
    more part descriptions with and w/o associcated links 
Web page n+ 
    more part descriptions 

Я пробовал:

try: 
    Do some things. 
    Error caused by missing link. 

except Index Error as e: 
    print "I/O error({0}): {1}".format(e.errno, e.strerror) 
    break # to go on to next link. 
    # Did not work because program stopped to report error! 

Поскольку связь отсутствует на веб-странице не может использовать, если отсутствует ссылка заявление.

Еще раз спасибо за помощь!

+0

Программа не останавливается, если исключено исключение. Удостоверьтесь, что вы обрабатываете исключение в своем цикле ссылок, и вы действительно перехватываете исключения. Также предоставляйте полное сообщение об ошибке и MVCE. – Basilevs

ответ

0

Возможно, вы ищете что-то вроде этого:

import urllib 

def get_content_safe(url): 
    try: 
     contents = urllib.open(url) 
     return contents 
    except IOError, ex: 
     # Report ex your way 
     return None 

def scrap: 
    # .... 
    content = get_content_safe(url) 
    if content == None: 
     pass # or continue or whatever 
    # .... 

Короче говоря, так же, как Basilevs сказал, когда вы ловите исключение, код не будет ломаться и будет держать его исполнение.

0

Я исправил ошибку, кроме ошибки, следуя документации Python 2. Кроме исправления, перевернутый дефектный веб-сайт отсутствует ссылка и продолжался по очистке данных.

Кроме коррекции:

except: 
     # catch AttributeError: 'exceptions.IndexError' object has no attribute 'errno' 
     e = sys.exc_info()[0] 
     print "Error: %s" % e 
     break 

Я буду смотреть в ответ (ов) отвечал на мои вопросы.

Еще раз спасибо за помощь!

Смежные вопросы