کتابخانه webbrowser یکی از ماژولهای استاندارد و بسیار کاربردی در پایتون است که به شما اجازه میدهد تا اسکریپتهای خود را با مرورگر پیشفرض سیستم عامل تعامل دهید. این ابزار برای خودکارسازی کارهای وب، تست نرمافزار، یا هدایت کاربران به صفحات مستندات بسیار مفید است.
در این مقاله، از سادهترین دستورات تا تکنیکهای پیشرفتهی کنترل مرورگرها را بررسی خواهیم کرد.
سطح مقدماتی (Beginner Level)
در این بخش با مفاهیم اولیه و توابع کلیدی برای باز کردن لینکها آشنا میشویم. این ماژول نیاز به نصب ندارد و به صورت پیشفرض در پایتون موجود است.
۱. باز کردن یک URL ساده (تابع open)
تابع open() اصلیترین تابع این ماژول است. این تابع سعی میکند URL داده شده را در مرورگر پیشفرض سیستم باز کند.
پارامترهای تابع open:
url: آدرس مورد نظر.new: اگر 0 باشد (پیشفرض)، در همان پنجره باز میشود. اگر 1 باشد، در پنجره جدید و اگر 2 باشد، در تب جدید باز میشود.autoraise: اگر True باشد، پنجره مرورگر به جلوی صفحه (Focus) میآید.
مثال اول: باز کردن گوگل
این کد به سادگی گوگل را در مرورگر شما باز میکند.
مثال دوم: استفاده از ورودی کاربر
در این مثال، آدرس را از کاربر میگیریم و باز میکنیم.
۲. مدیریت پنجرهها و تبها (open_new و open_new_tab)
اگر بخواهید صریحاً مشخص کنید که لینک در یک پنجرهی کاملاً جدید باز شود یا در یک تب جدید، میتوانید از توابع اختصاصی استفاده کنید.
open_new(url): باز کردن در پنجره جدید (New Window).open_new_tab(url): باز کردن در تب جدید (New Tab).
مثال اول: باز کردن در پنجره جدید
مثال دوم: باز کردن چندین تب
این اسکریپت سه سایت مختلف را همزمان باز میکند.
سطح پیشرفته (Professional Level)
در سطح پیشرفته، یاد میگیریم چگونه کنترل بیشتری روی انتخاب مرورگر داشته باشیم، چگونه مرورگرهای غیر-پیشفرض را فراخوانی کنیم و چگونه خطاهای احتمالی را مدیریت کنیم.
۱. انتخاب مرورگر خاص (تابع get)
گاهی اوقات نیاز دارید لینک را حتماً در فایرفاکس (Firefox) یا کروم (Chrome) باز کنید، نه مرورگر پیشفرض سیستم. تابع webbrowser.get() به شما یک شیء کنترلکننده (Controller Object) برای مرورگر خاص میدهد.
نامهای متداول مرورگرها:
firefoxchrome/google-chromesafariopera
مثال اول: باز کردن لینک در کروم (Linux/Mac/Windows)
نکته: این کد تنها در صورتی کار میکند که مرورگر نام برده شده در مسیر سیستم (PATH) وجود داشته باشد.
# این کد استاتیک است چون ممکن است روی سرور اجراکننده مرورگر کروم نصب نباشد
import webbrowser
try:
# دریافت کنترلر کروم
chrome = webbrowser.get('google-chrome')
chrome.open("https://www.google.com")
except webbrowser.Error as e:
print(f"Chrome not found: {e}")
مثال دوم: فالبک (Fallback) دستی
اگر مرورگر خاصی پیدا نشد، از مرورگر پیشفرض استفاده کنیم.
۲. ثبت مرورگرهای سفارشی (register)
اگر مرورگر شما در لیست استاندارد پایتون نیست یا در مسیر غیر استانداردی نصب شده است (مثلاً نسخه پرتابل)، میتوانید آن را با register به پایتون معرفی کنید.
سینتکس:
webbrowser.register(name, constructor, instance=None)
مثال اول: ثبت مرورگر با مسیر مشخص (ویندوز)
در این مثال یک مرورگر فرضی را با دادن مسیر فایل exe ثبت میکنیم.
import webbrowser
# مسیر فایل اجرایی مرورگر
# %s جایگزین URL خواهد شد
chrome_path = "C:/Program Files/Google/Chrome/Application/chrome.exe %s"
# ثبت مرورگر با نام دلخواه 'my_chrome'
webbrowser.register('my_chrome', None, webbrowser.BackgroundBrowser(chrome_path))
# استفاده از مرورگر ثبت شده
webbrowser.get('my_chrome').open("https://homeofpython.com")
مثال دوم: استفاده از GenericBrowser
برای سیستمعاملهایی که دستورات خط فرمان دارند (مثل lynx در لینوکس).
import webbrowser
# ثبت مرورگر متنی lynx
webbrowser.register('lynx', None, webbrowser.GenericBrowser('lynx %s'))
# اگر lynx نصب باشد اجرا میشود
try:
webbrowser.get('lynx').open("https://www.google.com")
except:
print("Browser logic defined.")
۳. استفاده از متغیر محیطی BROWSER
ماژول webbrowser به متغیر محیطی os.environ["BROWSER"] احترام میگذارد. اگر این متغیر ست شده باشد، پایتون تلاش میکند ابتدا از آن استفاده کند.
مثال کاربردی:
این تکنیک برای اسکریپتهایی که در محیطهای مختلف (Dev/Prod) اجرا میشوند مفید است تا بدون تغییر کد، مرورگر را عوض کنید.
۴. استفاده در خط فرمان (CLI)
ماژول webbrowser قابلیت اجرا مستقیم از طریق ترمینال را نیز دارد. این برای تست سریع بسیار عالی است.
دستور:
python -m webbrowser -t "https://www.python.org"
-n: باز کردن در پنجره جدید.-t: باز کردن در تب جدید.
مثال فراخوانی CLI در داخل پایتون (subprocess)
