2016-03-16 19 views
10

Tôi đang sử dụng Beautiful Soup 4 để phân tích cú pháp văn bản được định dạng html, được lấy từ Internet. Đôi khi văn bản này chỉ đơn giản là liên kết đến một số trang web. Một thực tế rằng BS4 là rất chéo về:Ngăn chặn cảnh báo url trong 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. 

Tôi rất ý thức về thực tế này, tôi chỉ muốn giải thích đầu vào văn bản, không có được một bài giảng. Tôi sử dụng bàn điều khiển để theo dõi các hoạt động của kịch bản, và nó đang bị lộn xộn bởi một thư viện rất tức giận.

Bất kỳ cách nào để chặn hoặc tắt cảnh báo này?

+0

Catch 'UserWarning'. –

+0

@LutzHorn Nó không phải là một ngoại lệ, nó in trực tiếp vào bàn điều khiển, và nó không dừng việc thực hiện chương trình. – Jmaa

+0

@jDo: Một tiền lệ sử dụng thử ... ngoại trừ cách đó sẽ không hiệu quả. – Jmaa

Trả lời

0

Cập nhật

Câu trả lời này đã lỗi thời, và như @legel tiểu bang, sẽ dẫn đến việc mất thông tin. Vui lòng tham khảo câu trả lời của mình cho giải pháp thích hợp


Bạn có thể bắt warnings như bạn có thể sử dụng các mô-đun exceptionswarnings.

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

Giải pháp bởi Wondercricket mất thông tin vì nó buộc một ngoại lệ được nâng lên (ngay cả khi nó được bắt). Để chỉ đơn giản chặn cảnh báo và tiếp tục xử lý tác phẩm này:

import warnings 
warnings.filterwarnings("ignore", category=UserWarning, module='bs4') 
Các vấn đề liên quan