Python

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이면, 가능하다면 새 브라우저 페이지(“탭”)가 열립니다. autoraiseTrue이면, 가능하다면 창을 올립니다(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에 대한 제어기 객체를 반환합니다. usingNone이면, 호출자의 환경에 적합한 기본 브라우저을 위한 제어기 객체를 반환합니다.

webbrowser.register(name, constructor, instance=None, *, preferred=False)

브라우저 유형 name을 등록합니다. 일단 브라우저 유형이 등록되면, get() 함수는 해당 브라우저 유형에 대한 제어기를 반환할 수 있습니다. instance가 제공되지 않거나, None이면, 필요할 때 constructor가 매개 변수 없이 호출되어 인스턴스를 만듭니다. instance가 제공되면, constructor는 절대로 호출되지 않으며, None일 수 있습니다.

preferredTrue로 설정하면 이 브라우저를 인자 없이 get()을 호출할 때 선호되는 결과가 되도록 합니다. 그렇지 않으면, 이 엔트리 포인트는 BROWSER 변수를 설정하거나 선언한 처리기의 이름과 일치하는 비어 있지 않은 인자로 get()을 호출하려는 경우에만 유용합니다.

버전 3.7에서 변경: preferred 키워드 전용 매개 변수가 추가되었습니다.

여러 가지 브라우저 유형이 미리 정의되어 있습니다. 이 표는 get() 함수로 전달될 수 있는 유형 이름과 제어기 클래스의 해당 인스턴스 화를 제공합니다, 모두 이 모듈에서 정의됩니다.

유형 이름

클래스 이름

노트

'mozilla'

Mozilla('mozilla')

'firefox'

Mozilla('mozilla')

'epiphany'

Epiphany('epiphany')

'kfmclient'

Konqueror()

(1)

'konqueror'

Konqueror()

(1)

'kfm'

Konqueror()

(1)

'opera'

Opera()

'links'

GenericBrowser('links')

'elinks'

Elinks('elinks')

'lynx'

GenericBrowser('lynx')

'w3m'

GenericBrowser('w3m')

'windows-default'

WindowsDefault

(2)

'macos'

MacOS('default')

(3)

'safari'

MacOS('safari')

(3)

'chrome'

MacOS('google chrome')

(3)

'firefox'

MacOS('firefox')

(3)

'google-chrome'

Chrome('google-chrome')

'chromium'

Chromium('chromium')

'chromium-browser'

Chromium('chromium-browser')

'iosbrowser'

IOSBrowser

(4)

노트:

  1. “Konqueror”는 유닉스용 KDE 데스크톱 환경의 파일 관리자이며, KDE가 실행 중일 때만 의미가 있습니다. 신뢰성 있게 KDE를 탐지하는 방법이 있다면 좋을 것입니다; KDEDIR 변수로는 충분하지 않습니다. KDE 2에서 konqueror 명령을 사용할 때조차도 “kfm”이라는 이름이 사용됨에 유의하십시오 — 구현이 Konqueror를 실행하기 위한 최상의 전략을 선택합니다.

  2. 윈도우 플랫폼에서만.

  3. 맥 OS 에서만.

  4. 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()와 동등합니다.

각주

분실물 보관소