Cara membuka tautan dengan Python. Bekerja dengan WebBrowser dan memecahkan masalah dengan Internet Explorer

Dalam proses pengerjaan uni curser, saya menemukan modul Python standar - WebBrowser . Melalui modul ini, saya ingin mengimplementasikan karya asisten suara dengan browser default, tetapi semuanya tidak berjalan semulus yang diharapkan. Pertama-tama mari kita beri tahu Anda apa modul ini dan bagaimana cara kerjanya secara umum.

WebBrowser adalah modul yang disematkan dalam Python yang menyediakan antarmuka tingkat tinggi untuk melihat dokumen web.

Untuk memulai, impor modul dengan perintah:

import webbrowser 

Sekarang ada pilihan cara membuka tautan. Ada dua kursi:

1. Tulis dalam satu baris:

 webbrowser.open(url, new=0, autoraise=True) 

Sebagai contoh:

 webbrowser.open('https://vk.com', new=2) 

Jika baru = 0, URL akan terbuka, jika mungkin, di jendela browser yang sama. Jika variabel baru = 1, jendela browser baru terbuka, jika memungkinkan. Jika baru = 2, halaman browser baru ("tab") terbuka, jika memungkinkan.

Anda dapat dengan aman melewati nilai autoraise, karena membuka browser di atas semua jendela, dan sebagian besar browser modern meludahi variabel ini bahkan jika itu salah.

2. Jangan menderita karena mengingat parameter baru dan menulis secara manusiawi:

 webbrowser.open_new(url) 

Desain ini membuka URL di jendela browser default baru, jika memungkinkan, jika tidak, membuka URL dalam jendela browser tunggal.

 webbrowser.open_new_tab(url) 

Dalam hal ini, URL akan terbuka pada halaman browser baru ("tab") secara default, jika mungkin, jika tidak setara dengan open_new ().

Misalkan Anda tidak perlu browser default. Ada perintah .get () yang keren untuk memilih browser

 webbrowser.get(using=None) 

Secara kasar, Anda cukup menunjukkan browser yang Anda gunakan.

Misalnya, membuka tab baru di Google Chrome:

 webbrowser.get(using='google-chrome').open_new_tab('https://vk.com') 

Tabel Nama Peramban:
Ketikkan namaNama kelas
'mozilla'Mozilla ('mozilla')
'firefox'Mozilla ('mozilla')
'netscape'Mozilla ('netscape')
'Galeon'Galeon ('galeon')
'pencerahan' 'Galeon ('pencerahan')
'batu loncatan'BackgroundBrowser ('batu loncatan')
'kfmclient'Konqueror ()
'penakluk' 'Konqueror ()
'kfm'Konqueror ()
'mosaik'BackgroundBrowser ('mosaik')
'opera'Opera ()
'cawanCawan ()
'tautan'GenericBrowser ('tautan')
'elinks'Elinks ('elinks')
'lynx'GenericBrowser ('lynx')
'w3m'GenericBrowser ('w3m')
'windows-default'Kerusakan Windows
'macosx'MacOSX ('default')
'safari'MacOSX ('safari')
'google-chrome'Chrome ('google-chrome')
'krom' 'Chrome ('chrome')
'kromium' 'Chromium ('chromium')
'browser chromium'Chromium ('browser chromium')

Tetapi tidak selalu memungkinkan untuk bertahan dengan .get () sendirian, dan dalam hal ini fungsi .register () datang untuk menyelamatkan, misalnya:

 import webbrowser webbrowser.register('Chrome', None, webbrowser.BackgroundBrowser('C:\Program Files (x86)\Google\Chrome\Application\chrome.exe')) webbrowser.get('Chrome').open_new_tab('vk.com') 

Kami menunjukkan jalur ke Google Chrome, menamainya, dan sekarang semua tautan hanya terbuka di dalamnya. Saya harap kami telah memilah-milah modul WebBrowser sedikit dan sekarang mari kita beralih ke masalah kecil saya.

Masalah


Seperti yang disebutkan sebelumnya, untuk proyek kursus, saya memilih untuk membuat asisten suara. Saya ingin mengajarinya mengikuti tautan dan mencari informasi di mesin pencari. Tentu saja, akan mungkin untuk "mengisi" banyak perpustakaan untuk ini, tetapi pada dasarnya saya ingin menerapkan ini melalui modul WebBrowser standar.

Karena sebagian besar browser modern memiliki jalur input tautan dan jalur pencarian hal yang sama, tampaknya Anda dapat dengan mudah mentransfer permintaan ke tempat yang sama dengan tautan yang dikirim.

Sebagai contoh:

 import webbrowser webbrowser.open_new_tab('https://vk.com') webbrowser.open_new_tab('') 

Menurut logika kode ini, dua tab harus terbuka:

  1. Situs web vk.com
  2. Permintaan Mesin Pencari - Apel

Namun pada kenyataannya, dua browser berbeda terbuka. Tautan dibuka oleh browser default kami, dan permintaan dibuat oleh Internet Explorer (meskipun biayanya Windows 10, IE masih terbuka, bukan Edge). Bagaimana cara menghadapinya? Guru sungguhan dapat masuk ke modul WebBrowser itu sendiri dan memperbaikinya di sana, tetapi kita akan dengan tenang mengevaluasi peluang kita dan mengikuti arus.

Karena kami hanya diperbolehkan membuka tautan di peramban default, kami hanya akan membuka tautan.

Langkah solusi


  1. Kami membuat permintaan pencarian di mesin pencari kami (Yandex, Google, dll.)
  2. Kami mendapatkan tautannya

  3. Dan, seperti yang sudah banyak ditebak, cukup masukkan tautan kami tanpa apa yang muncul setelah "text ="

     import webbrowser webbrowser.open_new_tab('https://vk.com') webbrowser.open_new_tab('https://yandex.ru/search/?lr=10735&text=') 
  4. Sekarang Anda perlu menambahkan teks kueri itu sendiri baik melalui "+" atau melalui "% s"

    • Melalui "+"

       webbrowser.open_new_tab('https://yandex.ru/search/?lr=10735&text='+'') 
    • Melalui "%"

       webbrowser.open_new_tab('https://yandex.ru/search/?lr=10735&text=%s'%'') 
    • Tetapi lebih baik diimplementasikan melalui format

       webbrowser.open_new_tab('https://yandex.ru/search/?lr=10735&text={}'.format('')) 


Sekarang mari kita membuat pengguna memasukkan tautan atau permintaan, dan program itu sendiri memahami metode mana yang digunakan (panggil tautan atau masukkan ke dalam tautan permintaan).

Untuk mulai dengan, kami memahami bahwa tautan membawa domain (.ru, .com, dll.), Dalam permintaan, sebagai aturan, mereka tidak mengakhiri (membeli mobil, film online, dll.), Tetapi di tautan bilah ruang

Oleh karena itu, kami akan mencari periode dan ruang dalam apa yang dimasukkan pengguna. Kita dapat melakukan ini berkat modul re, yang juga secara bawaan dibangun ke Python. Python menawarkan dua operasi primitif berbeda berdasarkan ekspresi reguler: pencarian yang cocok untuk sebuah pola di awal string, sementara pencarian mencari seluruh string. Kami akan menggunakan operasi pencarian .

 import webbrowser import re call = input('   : ') if re.search(r'\.', call): webbrowser.open_new_tab('https://' + call) elif re.search(r'\ ', call): webbrowser.open_new_tab('https://yandex.ru/search/?text='+call) else: webbrowser.open_new_tab('https://yandex.ru/search/?text=' + call) 

Saya akan sedikit menjelaskan kodenya.

Pengguna memasukkan tautan atau meminta teks ke dalam variabel panggilan.

 if re.search(r'\.', call): webbrowser.open_new_tab('https://' + call) 

Kondisi pertama memeriksa variabel panggilan untuk titik di dalamnya. Karakter '\' diperlukan, jika tidak, modul tidak mengerti bahwa karakter adalah titik sebelum itu.

 elif re.search(r'\ ', call): 

Dalam kondisi ini, semuanya sama dengan yang pertama, tetapi verifikasi sudah berlangsung untuk ruang. Ruang menunjukkan bahwa kami memiliki permintaan pencarian.

 else: webbrowser.open_new_tab('https://yandex.ru/search/?text=' + call) 

Dan lagi , pada gilirannya, menetapkan semua yang ditulis pengguna tanpa spasi dan titik dalam kueri penelusuran.

Memeriksa ruang diperlukan, jika tidak, WebBrowser membuka Internet Explorer.

Terima kasih atas perhatian Anda! Semoga artikel ini bermanfaat bagi seseorang.

Source: https://habr.com/ru/post/id470938/


All Articles