Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python 3
Code

Bagaimana Saya Belajar untuk Berhenti Khawatir dan Menyukai Capitalization Tool

by
Difficulty:IntermediateLength:MediumLanguages:

Indonesian (Bahasa Indonesia) translation by Muhammad Gufron (you can also view the original English article)

Ikhtisar

Saya menulis banyak tutorial untuk Envato Tuts +. Tutorial ini memiliki judul yang harus mengikuti aturan-aturan tertentu kapitalisasi. Tuts + memberikan kita penulis alat berbasis web yang mengambil teks judul dan kembali menuju benar dikapitalisasi. Ketika saya menulis tutorial saya saya mencoba untuk mendapatkan ke dalam aliran, dan beralih ke alat kapitalisasi istirahat aliran saya. Aku digunakan untuk hanya sayap itu dan melakukan kapitalisasi sendiri.

Ternyata bahwa saya sering membuat kesalahan, yang menyebabkan bekerja ekstra untuk Tuts + editor yang harus memperbaikinya. Menjadi seorang programmer, saya memutuskan untuk program jalan keluar dari masalah. Aku masih menulis judul saya sendiri, tapi ketika aku sudah selesai, aku berlari sedikit Python program itu memilah artikel saya, mendeteksi semua header, dan kemudian berjalan mereka melalui Tuts + kapitalisasi alat dan benar memanfaatkan semua judul.

Karena alat kapitalisasi adalah sebuah aplikasi berbasis web dan tidak API, aku untuk mengotomatisasi browser untuk meminta itu dan ekstrak judul dikapitalisasi. Dalam tutorial ini, Anda akan belajar bagaimana untuk mengendalikan browser dengan Python melalui Selenium dan membuatnya melakukan penawaran Anda.

Bagaimana untuk memanfaatkan judul

Memanfaatkan judul tidak roket sains, tetapi ianya tidak sepele baik. Ada beberapa gaya, dengan beberapa tumpang tindih dan beberapa variasi. Hal ini lebih atau kurang konsensus:

  • Memanfaatkan semua kata-kata dengan empat atau lebih huruf.
  • Selalu memanfaatkan kata-kata pertama dan terakhir.
  • Jangan manfaatkan artikel: a, an, the.
  • Tidak memanfaatkan konjunksi-konjunksi singkat: dan, atau, atau, untuk, tetapi, begitu, belum.

Lalu ada sekelompok pengecualian dan situasi khusus (misalnya menuju mengalir ke baris berikutnya). Tapi ini semua diperdebatkan. Bahkan jika saya memutuskan untuk menulis kode kapitalisasi saya sendiri maka Tuts + sudah mengambil rasa mereka dan saya perlu untuk menyesuaikan diri dengan gaya pilihan mereka.

Konverter kasus Online

Tuts + kapitalisasi alat adalah alat internal yang dimaksudkan untuk digunakan oleh Tuts + instruktur saja, jadi aku tidak bisa menggunakannya sebagai demo. Namun, saya menemukan alat yang sama disebut Judul Kasus Converter. Ini adalah aplikasi web dengan area teks besar di mana Anda dapat mengetik judul Anda (atau judul), mengkonversi tombol yang Anda klik untuk mengirimkan formulir, daerah output yang muncul dengan judul benar dikapitalisasi, dan akhirnya tombol salinan yang salinan menuju dikonversi clipboard.

The Online Case Converter

Rencana untuk mengotomatisasi Capitalization Tool

Oke. Aku akan menggunakan konverter kasus online, tetapi tidak ada API. Ini bukanlah masalah besar. Bisa mengotomatisasi browser dan mensimulasikan pengguna mengetik judul kolom input, mengklik tombol convert, menunggu hasil muncul, mengklik tombol Salin, dan akhirnya sisipkan judul benar dikapitalisasi dari clipboard.

Langkah pertama adalah untuk memilih otomatisasi browser. Saya memilih Selenium WebDriver, yang saya sudah digunakan berhasil sebelum. Sisa dari rencana adalah:

  • Meluncurkan browser.
  • Menavigasi ke URL converter kasus online.
  • Menemukan semua elemen yang diperlukan.
  • Mengisi input field.
  • Submit form.
  • Menunggu output.
  • Klik tombol Salin.
  • Membaca judul dikapitalisasi dari clipboard.

Kode sumber lengkap dapat ditemukan di GitLab.

Pengantar Selenium

Selenium telah mengotomatisasi browser sejak tahun 2004. Pada tahun 2008 bergabung dengan proyek WebDriver, yang membahas beberapa batasan selenium asli (misalnya berlari di JavaScript sandbox).

Selenium masih menawarkan rasa asli selenium disebut Selenium RC (Remote Control). Ini juga memiliki IDE untuk menulis tes otomatis suite dan sebuah alat yang disebut Selenium Grid yang skala Selenium RC untuk suite besar tes yang harus dijalankan dalam beberapa lingkungan. Kita akan membatasi diri untuk akses pragmatis ke browser melalui API WebDriver (alias Selenium 2).

Menginstal Selenium dan Web Driver

Instalasi Selenium yang sederhana seperti pipenv selenium. Jika Anda tidak akrab dengan Pipenv, memeriksa meninjau kembali Python Kemasan dengan Pipenv. Anda juga memerlukan driver web tertentu. Ada web driver untuk browser yang berbeda dan kembali berakhir. Anda dapat menemukan daftar lengkap situs web Selenium.

Saya memilih Chrome web driver untuk tutorial ini. Berikut ini adalah versi terbaru.

Ini adalah file tunggal zip yang berisi dieksekusi tunggal (ada versi Linux, macOS dan Windows). Setelah Anda men-download itu, unzip dan drop di jalan Anda.

Selamat! Sekarang Anda siap untuk menggunakan Selenium WebDriver dari Python.

Meluncurkan peramban

Selenium membuatnya sangat mudah untuk memulai browser. Selama Anda memiliki benar web driver dalam path Anda, Anda hanya mengimpor modul selenium.webdriver dan memanggil metode yang tepat untuk memulai browser Anda pilihan:

Menavigasi ke URL

Setelah Anda memiliki driver objek, Anda dapat memanggil get() metode untuk menavigasi ke laman web apa pun. Berikut adalah cara untuk menavigasi ke judul kasus Konverter:

Menemukan elemen

Kita perlu cara untuk mencari elemen pada halaman yang Anda inginkan untuk berinteraksi dengan. Cara termudah adalah untuk memeriksa halaman web di browser dan menemukan ID dari unsur-unsur target. Pada gambar berikut, Anda dapat melihat bahwa input field memiliki id "judul":

Finding Elements

Tombol convert tidak memiliki id, tapi itu tidak masalah karena Anda akan melihat segera. Berikut adalah kode untuk menemukan bentuk dan bidang teks oleh id:

Jika elemen yang Anda inginkan untuk berinteraksi dengan tidak memiliki id, Anda dapat menemukannya menggunakan berbagai metode lain seperti nama, nama kelas atau CSS selector. Lihat semua pilihan di panduan Selenium ini.

Misalnya, untuk menemukan tombol convert, saya menggunakan nama kelas:

Mempopulasikan Text Field

Untuk mengisi input field, kita dapat menggunakan metode send_keys() kami elemen input field. Tetapi pastikan untuk membersihkan pertama. Jika tidak, Anda hanya akan menambahkan teks yang ada.

Itu cukup mudah.

Mengklik Tombol Submit Form

Sekarang, saatnya untuk menyerahkan formulir. Anda dapat melakukannya dengan dua cara:

  • Menemukan elemen form pada halaman dan memanggil metode submit().
  • Menemukan tombol mengkonversi dan klik.

Saya awalnya diajukan bentuk langsung:

Untuk beberapa alasan, itu tidak bekerja. Ada tidak ada kesalahan, tetapi tidak ada yang terjadi. Aku tidak menghabiskan terlalu banyak waktu menyelidiki karena titik seluruh Selenium dan tutorial ini untuk mensimulasikan seseorang. Jadi saya menggunakan metode lain dan hanya mengklik tombol saya temukan sebelumnya:

Menunggu pengiriman Form

Converter kasus online agak mewah. Bidang output tidak ada pada awalnya. Setelah Anda mengklik tombol convert dan formulir dikirimkan, output akan ditampilkan bersama dengan tombol Salin. Itu berarti bahwa kita harus menunggu sampai pada form selesai sebelum tombol salinan muncul dan kita dapat klik untuk menyalin hasil ke clipboard.

Selenium punya Anda tertutup. Ini memiliki dukungan untuk menunggu untuk kondisi yang sewenang-wenang dan waktu keluar jika mereka tidak terwujud. Berikut adalah kode yang menunggu untuk tombol Salin. Ini menciptakan sebuah objek WebDriverWait dengan timeout lima detik. Ia kemudian menciptakan kondisi untuk kehadiran elemen dengan kelas nama copyButton, dan maka panggilan tunggu objek until() metode dengan kondisi.

Hasilnya adalah bahwa setelah mengklik tombol convert, itu akan menunggu sampai salinan tombol muncul atau waktu setelah lima detik. Jika semua baik, itu akan kembali unsur copyButton.

Membaca Judul Dikapitalisasi

Anda dapat membaca isi dari bidang teks dengan field.get_attribute ('value'). Tapi, seperti yang saya sebutkan sebelumnya, konverter case online agak mewah. Outputnya adalah struktur nested span dan divs, dan ketika Anda membawa lebih dari setiap bagian dari output, ia memberi tahu Anda mengapa itu dikapitalisasi atau tidak.

Saya bisa menelusuri labirin ini dan mengurai judul yang sebenarnya, tetapi ada cara yang lebih mudah. Tombol salin menyalin kepala yang dikapitalisasi ke clipboard. Kita tinggal mengklik tombol dan membaca judul dari clipboard. Saya menggunakan modul clipboard, yang dapat Anda instal dengan pipenv install clipboard. Kode di bawah ini membersihkan clipboard dengan menyalin string kosong ke dalamnya, mengklik tombol salin, dan berulang kali membaca clipboard hingga tidak kosong.

Memanfaatkan Dokumen Markdown

OK. Kita dapat mengkapitalisasi satu tajuk. Saya memasukkan semua kode ini dalam satu fungsi:

Sekarang, dengan berbekal kemampuan ini, kita dapat mempublikasikan seluruh artikel dan memanfaatkan semua judul. Saya menulis tutorial saya di Markdown. Semua heading saya dimulai dengan satu atau lebih hash ().

Saya mendefinisikan fungsi pembantu yang mengambil garis dan, jika berisi judul, mengkapitalisasi dengan benar menggunakan fungsi capitalize_heading() dan mengembalikan hasilnya. Hal utama adalah melucuti semua hash terkemuka dan ruang dan memulihkan mereka nanti. Kita tidak bisa memberi makan heading dengan terkemuka ruang karena itu membingungkan Konverter kasus online:

Pada titik ini, kita dapat memanfaatkan menuju Markdown. Saatnya untuk memanfaatkan Markdown seluruh dokumen. Kode ini cukup sederhana — iterate melalui semua jalur, memanfaatkan setiap baris yang dimulai dengan hash dan kembali benar dikapitalisasi teks:

def capitalize_all_headings(markdown):

Fungsi utama mengambil dokumen Markdown masukan, memanfaatkan itu, dan menyimpan hasilnya sebagai 'capitalized.md', yang Anda dapat memeriksa dan menggunakan. Satu-satunya hal untuk berhati-hati tentang adalah jika dokumen Markdown berisi bebas-menuju garis yang dimulai dengan hash. Ini dapat terjadi jika Anda kepala blok kode yang mengandung Python atau bash komentar.

Fakta menyenangkan — tutorial Anda membaca sekarang adalah dikapitalisasi menggunakan program ini.

Kesimpulan

Mengotomatisasi browser memungkinkan Anda secara pemrograman mengambil kendali dari aplikasi web yang tidak menyediakan API. Hal ini berguna terutama untuk mengisi formulir dan kegiatan web interaktif lainnya (mengklik 'Next' pada panjang EULAs?).

Selenium terutama dirancang untuk pengujian aplikasi web, tetapi itu besar di mengotomatisasi setiap browser berbasis interaksi. Jika Anda berpikir sedikit, Anda mungkin dapat menemukan banyak aplikasi web yang Anda dapat mengotomatisasi dan membuat hidup Anda lebih mudah.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.