webbrowser — 편리한 웹 브라우저 제어기¶
소스 코드: Lib/webbrowser.py
webbrowser 모듈은 사용자가 웹 기반 문서를 볼 수 있도록 하는 고수준 인터페이스를 제공합니다. 대부분의 상황에서 이 모듈의 open() 함수를 호출하기만 하면 올바른 동작이 수행됩니다.
유닉스에서, X11에서는 그래픽 브라우저가 선호되지만, 그래픽 브라우저를 사용할 수 없거나 X11 디스플레이를 사용할 수 없으면 텍스트 모드 브라우저가 사용됩니다. 텍스트 모드 브라우저가 사용되면, 사용자가 브라우저를 종료할 때까지 호출하는 프로세스가 블록 됩니다.
BROWSER 환경 변수가 존재하면, 이는 플랫폼 기본 설정에 앞서 시도할 브라우저들의 목록으로 해석되며, 각 항목은 os.pathsep 으로 구분됩니다. 리스트의 일부 값에 %s 문자열이 포함된 경우, 해당 부분은 %s 자리에 인수로 전달된 URL을 대체하여 사용하는 실제 브라우저 명령줄로 해석됩니다. 값이 이미 등록된 브라우저 중 하나를 가리키는 단어인 경우 이 브라우저는 검색 목록의 맨 앞에 추가됩니다. 해당 부분이 %s 를 포함하지 않는 경우, 단순히 실행할 브라우저의 이름으로 해석됩니다. [1]
버전 3.14에서 변경: BROWSER 변수를 사용하여 플랫폼 기본값 목록의 순서를 변경할 수도 있습니다. 이는 특히 플랫폼 기본값이 PATH 에 있는 명령줄 도구를 참조하지 않는 macOS 환경에서 유용합니다.
유닉스가 아닌 플랫폼에서, 또는 유닉스에서 원격 브라우저를 사용할 수 있을 때, 제어하는 프로세스는 사용자가 브라우저를 완료할 때까지 기다리지 않고, 원격 브라우저가 디스플레이에 자체 창을 유지하도록 허용합니다. 유닉스에서 원격 브라우저를 사용할 수 없으면, 제어하는 프로세스가 새 브라우저를 시작하고 기다랍니다.
iOS에서 BROWSER 환경 변수뿐만 아니라 autoraise, 브라우저 기본 설정, 새 탭/윈도우 생성 제어를 위한 모든 인수가 무시됩니다. 웹 페이지는 항상 사용자가 선호하는 브라우저의 새 탭으로 열리며, 해당 브라우저가 전면에 표시됩니다. iOS에서 webbrowser 모듈을 사용하는 데에는 ctypes 모듈이 필요합니다. 만약 ctypes 를 사용할 수 없는 경우, open() 호출은 실패하게 됩니다.
명령 줄 인터페이스¶
스크립트 webbrowser는 모듈의 명령 줄 인터페이스로 사용될 수 있습니다. 인자로 URL을 받아들입니다. 다음과 같은 선택적 매개 변수를 받아들입니다:
- -n, --new-window¶
가능하다면 새 브라우저 창에서 URL을 엽니다.
- -t, --new-tab¶
새 브라우저 탭에서 URL을 엽니다.
당연히, 이 옵션들은 상호 배타적입니다. 사용 예:
python -m webbrowser -t "https://www.python.org"
가용성: not WASI, not Android.
다음 예외가 정의됩니다:
- exception webbrowser.Error¶
브라우저 제어 에러가 일어날 때 발생하는 예외.
다음 함수가 정의됩니다:
- webbrowser.open(url, new=0, autoraise=True)¶
기본 브라우저를 사용하여 url을 표시합니다. new가 0이면, 가능하다면 같은 브라우저 창에서 url이 열립니다. new가 1이면, 가능하다면 새 브라우저 창이 열립니다. new가 2이면, 가능하다면 새 브라우저 페이지(“탭”)가 열립니다. autoraise가
True이면, 가능하다면 창을 올립니다(raise) (이것은 많은 창 관리자에서 이 변수의 설정과 관계없이 일어납니다).브라우저가 성공적으로 실행되면
True를 반환하고, 그렇지 않으면False를 반환합니다.일부 플랫폼에서, 이 함수를 사용하여 파일명을 여는 것은 동작하고 운영 체제의 연결된 프로그램이 시작될 수 있습니다. 하지만, 이것은 지원되지도 이식성 있지도 않습니다.
인자
url로 감사 이벤트(auditing event)webbrowser.open을 발생시킵니다.
- webbrowser.open_new(url)¶
가능하다면, 기본 브라우저의 새 창에서 url을 엽니다, 그렇지 않으면, 유일한 브라우저 창에서 url을 엽니다.
브라우저가 성공적으로 실행되면
True를 반환하고, 그렇지 않으면False를 반환합니다.
- webbrowser.open_new_tab(url)¶
가능하다면, 기본 브라우저의 새 페이지(“탭”)에서 url을 엽니다, 그렇지 않으면
open_new()와 동등합니다.브라우저가 성공적으로 실행되면
True를 반환하고, 그렇지 않으면False를 반환합니다.
- webbrowser.get(using=None)¶
브라우저 유형 using에 대한 제어기 객체를 반환합니다. using이
None이면, 호출자의 환경에 적합한 기본 브라우저을 위한 제어기 객체를 반환합니다.
- webbrowser.register(name, constructor, instance=None, *, preferred=False)¶
브라우저 유형 name을 등록합니다. 일단 브라우저 유형이 등록되면,
get()함수는 해당 브라우저 유형에 대한 제어기를 반환할 수 있습니다. instance가 제공되지 않거나,None이면, 필요할 때 constructor가 매개 변수 없이 호출되어 인스턴스를 만듭니다. instance가 제공되면, constructor는 절대로 호출되지 않으며,None일 수 있습니다.preferred를
True로 설정하면 이 브라우저를 인자 없이get()을 호출할 때 선호되는 결과가 되도록 합니다. 그렇지 않으면, 이 엔트리 포인트는BROWSER변수를 설정하거나 선언한 처리기의 이름과 일치하는 비어 있지 않은 인자로get()을 호출하려는 경우에만 유용합니다.버전 3.7에서 변경: preferred 키워드 전용 매개 변수가 추가되었습니다.
여러 가지 브라우저 유형이 미리 정의되어 있습니다. 이 표는 get() 함수로 전달될 수 있는 유형 이름과 제어기 클래스의 해당 인스턴스 화를 제공합니다, 모두 이 모듈에서 정의됩니다.
유형 이름 |
클래스 이름 |
노트 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
(1) |
|
|
(1) |
|
|
(1) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(2) |
|
|
(3) |
|
|
(3) |
|
|
(3) |
|
|
(3) |
|
|
|
|
|
|
|
|
|
|
|
(4) |
노트:
“Konqueror”는 유닉스용 KDE 데스크톱 환경의 파일 관리자이며, KDE가 실행 중일 때만 의미가 있습니다. 신뢰성 있게 KDE를 탐지하는 방법이 있다면 좋을 것입니다;
KDEDIR변수로는 충분하지 않습니다. KDE 2에서 konqueror 명령을 사용할 때조차도 “kfm”이라는 이름이 사용됨에 유의하십시오 — 구현이 Konqueror를 실행하기 위한 최상의 전략을 선택합니다.윈도우 플랫폼에서만.
맥 OS 에서만.
iOS 에서만.
Added in version 3.2: 새로운 MacOSXOSAScript 클래스가 추가되었으며, Mac에서는 기존의 MacOSX 클래스 대신 이 클래스를 사용합니다. 이를 통해 현재 OS 기본값으로 설정되지 않은 브라우저를 여는 기능이 지원됩니다.
Added in version 3.3: Chrome/Chromium에 대한 지원이 추가되었습니다.
버전 3.12에서 변경: 여러 오래된 브라우저에 대한 지원이 제거되었습니다. 제거된 브라우저는 Grail, Mosaic, Netscape, Galeon, Skipstone, Iceape 및 Firefox 35 이하 버전입니다.
버전 3.13에서 변경: iOS에 대한 지원이 추가되었습니다.
Added in version 3.15: MacOSXOSAScript 을 대체하기 위해 MacOS 가 추가되었으며, 이제 브라우저를 실행할 때 osascript 대신 /usr/bin/open 을 사용합니다.
버전 3.15부터 사용 지원 중단(deprecated), 버전 3.17에서 제거 예정: MacOSXOSAScript 는 이제 MacOS 를 위해 폐지되었습니다. osascript 대신 /usr/bin/open 을 사용하는 것은 보안 및 사용성 개선 측면에서 유리합니다. osascript 는 범용 스크립팅 인터프리터로서 악용될 가능성이 있어 관리되는 시스템에서는 차단될 수 있기 때문입니다.
여기 몇 가지 간단한 예제가 있습니다:
url = 'https://docs.python.org/'
# 브라우저 창이 이미 열려 있으면, 새 탭에 URL을 엽니다.
webbrowser.open_new_tab(url)
# 새 창에 URL을 엽니다, 가능하다면 창을 올립니다.
webbrowser.open_new(url)
브라우저 제어기 객체¶
브라우저 제어기는 name 속성과 모듈 수준의 편의 함수와 대응하는 다음 세 가지 메서드를 제공합니다.
- controller.name¶
시스템에 따른 브라우저 이름입니다.
- controller.open(url, new=0, autoraise=True)¶
이 제어기가 처리하는 브라우저를 사용하여 url을 표시합니다. new가 1이면, 가능하다면 새 브라우저 창이 열립니다. new가 2이면, 가능하다면 새 브라우저 페이지(“탭”)가 열립니다.
- controller.open_new(url)¶
가능하다면, 이 제어기가 처리하는 브라우저의 새 창에 url을 엽니다, 그렇지 않으면, 유일한 브라우저 창에 url을 엽니다. 별칭
open_new().
- controller.open_new_tab(url)¶
가능하다면, 이 제어기가 처리하는 브라우저의 새 페이지(“탭”)에 url을 엽니다, 그렇지 않으면
open_new()와 동등합니다.
각주