2016-03-16 8 views
10

Sto usando Beautiful Soup 4 per analizzare un testo formattato in html, raschiato da Internet. A volte questo testo è semplicemente il link ad un sito web. Un fatto che BS4 sta molto croce:Sopprime l'avviso di url in beautifulsoup

UserWarning: "http://example.com" looks like a URL. Beautiful Soup is not 
an HTTP client. You should probably use an HTTP client to get the document 
behind the URL, and feed that document to Beautiful Soup. 

Sono molto consapevole di questo fatto, voglio solo interpretare il metodo di scrittura, non si ottiene una lezione. Uso la console per monitorare le attività della sceneggiatura ed è ingombra da una libreria molto arrabbiata.

Un modo per sopprimere o disabilitare questo avviso?

+0

Catch 'UserWarning'. –

+0

@LutzHorn Non è un'eccezione, sta stampando direttamente sulla console e non interrompe l'esecuzione del programma. – Jmaa

+0

@jDo: un preconcetto che l'utilizzo di try ... eccetto che in quel modo non funzionerebbe. – Jmaa

risposta

0

Aggiornamento

Questa risposta è obsoleto, e come @legel Stati, si tradurrà in perdita di informazioni. Si prega di fare riferimento alla sua risposta per la soluzione appropriata


È possibile prendere warnings come è possibile exceptions utilizzando il modulo warnings.

import warnings 
import bs4 

warnings.filterwarnings('error') 
try: 
    soup = bs4.BeautifulSoup('http://stackoverflow.com/') 
except UserWarning: 
    print('I caught the warning') 

>>> I caught the warning 

12

La soluzione da Wondercricket perde informazioni perché costringe l'eccezione da sollevare (anche se è inceppata). Per sopprimere semplicemente l'avviso e continuare con l'elaborazione di questo funziona:

import warnings 
warnings.filterwarnings("ignore", category=UserWarning, module='bs4')