2016-03-16 11 views
10

Używam Beautiful Soup 4 do parsowania jakiegoś tekstu sformatowanego w html, zdrapanego z Internetu. Czasami ten tekst to po prostu link do jakiejś strony. Fakt, że BS4 jest bardzo krzyż o:Pomijanie ostrzeżenia o url w 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. 

Jestem bardzo świadomi tego faktu, po prostu chcę interpretować wprowadzania tekstu, a nie dostać wykład. Używam konsoli do monitorowania działań skryptu i jest on zagracony przez bardzo wściekłą bibliotekę.

Dowolny sposób na wyłączenie lub wyłączenie tego ostrzeżenia?

+0

Złap "UserWarning". –

+0

@LutzHorn To nie jest wyjątek, jego drukowanie bezpośrednio na konsoli i nie zatrzymuje wykonywania programu. – Jmaa

+0

@jDo: Wstępne przekonanie, że użycie try ... z wyjątkiem tego nie zadziała. – Jmaa

Odpowiedz

0

Aktualizacja

Ta odpowiedź jest przestarzała, a jak @legel stanach, spowoduje utratę informacji. Proszę odnieść się do jego odpowiedzi na odpowiednim roztworem


Można złapać warnings jak można exceptions użyciu modułu 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

roztworu przez Wondercricket traci informację ponieważ wymusza wyjątek podniesione (nawet jeśli jest złapany). Aby po prostu wyłączyć ostrzeżenie i kontynuować przetwarzanie, wykonaj następujące czynności:

import warnings 
warnings.filterwarnings("ignore", category=UserWarning, module='bs4') 
Powiązane problemy