Saya coding bersama dengan kuliah. Ketika saya menarik kode dari situs web memang dengan URL yang tepat menggunakan git. perintah url. Itu menarik posting yang tidak ada di halaman. Ada ide tentang apa ini? Show
Martin Breuss Tim RP di Hai @jcool78758, saya tidak begitu mengerti apa yang Anda maksud dengan
Sulit untuk mengatakan apa yang Anda lihat hanya dari apa yang Anda tulis. Anda dapat memposting kode Anda dan hasil yang Anda peroleh mengejutkan, maka saya mungkin dapat membantu Saran saya adalah mencoba memeriksa situs web yang memang benar dan mencari beberapa teks yang ada di postingan yang tidak Anda duga. Lihat apakah Anda dapat menemukannya di HTML asli, seharusnya ada di suatu tempat. ) jcool78758 di Tebakan saya yang berpendidikan adalah ada sesuatu di situs web yang sebenarnya karena ada kode yang berfungsi dengan baik di situs monster. Apakah ada cara saya bisa melampirkan file tangkapan layar dan. py dari notebook Jupyter ke komentar ini? Martin Breuss Tim RP di Hai lagi, Anda tidak dapat melampirkan gambar di sini, tetapi Anda dapat mengunggahnya ke layanan hosting, mis. g. Google Drive, lalu tambahkan tautan di komentar ini Anda juga dapat menambahkan tautan ke repo GitHub tempat Anda menyimpan kode, atau menambahkan potongan kode di sini. Jika ya, ingatlah untuk memformatnya sebagai kode Apakah Anda mengikuti saran saya dan mencari konten situs web memang untuk melihat apakah konten yang mengejutkan muncul, dan di mana? Perlu diingat juga bahwa kode persis yang berfungsi untuk situs Monster pasti tidak akan berfungsi untuk situs Memang. Mereka dibangun dengan HTML yang berbeda, sehingga setiap pengikis harus bekerja untuk struktur situs tertentu Pengikisan web adalah proses pengumpulan dan penguraian data mentah dari Web, dan komunitas Python telah menghasilkan beberapa alat pengikis web yang cukup kuat Internet host mungkin sumber informasi terbesar di planet ini. Banyak disiplin ilmu, seperti ilmu data, intelijen bisnis, dan pelaporan investigasi, dapat memperoleh manfaat besar dari pengumpulan dan analisis data dari situs web Dalam tutorial ini, Anda akan mempelajari caranya
Catatan. Tutorial ini diadaptasi dari bab “Berinteraksi Dengan Web” di Python Basics. Pengantar Praktis untuk Python 3 Buku ini menggunakan editor IDLE bawaan Python untuk membuat dan mengedit file Python dan berinteraksi dengan shell Python, jadi Anda akan melihat referensi sesekali ke IDLE di sepanjang tutorial ini. Namun, Anda seharusnya tidak mengalami masalah dalam menjalankan kode contoh dari editor dan lingkungan pilihan Anda Kode sumber. Klik di sini untuk mengunduh kode sumber gratis yang akan Anda gunakan untuk mengumpulkan dan mengurai data dari Web Mengikis dan Mengurai Teks Dari Situs WebMengumpulkan data dari situs web menggunakan proses otomatis dikenal sebagai web scraping. Beberapa situs web secara eksplisit melarang pengguna mengorek data mereka dengan alat otomatis seperti yang akan Anda buat di tutorial ini. Situs web melakukan ini karena dua kemungkinan alasan
Sebelum menggunakan keterampilan Python Anda untuk pengikisan web, Anda harus selalu memeriksa kebijakan penggunaan yang dapat diterima situs web target Anda untuk melihat apakah mengakses situs web dengan alat otomatis merupakan pelanggaran terhadap ketentuan penggunaannya. Secara hukum, pengikisan web yang bertentangan dengan keinginan situs web adalah area abu-abu Penting. Perlu diketahui bahwa teknik berikut saat digunakan di situs web yang melarang pengikisan web Untuk tutorial ini, Anda akan menggunakan halaman yang dihosting di server Real Python. Halaman yang akan Anda akses telah disiapkan untuk digunakan dengan tutorial ini Sekarang setelah Anda membaca penafian, Anda bisa mendapatkan hal-hal yang menyenangkan. Di bagian selanjutnya, Anda akan mulai mengambil semua kode HTML dari satu halaman web Hilangkan iklanBangun Pengikis Web Pertama AndaSatu paket berguna untuk pengikisan web yang dapat Anda temukan di pustaka standar Python adalah 6, yang berisi alat untuk bekerja dengan URL. Secara khusus, modul _7 berisi fungsi yang disebut 8 yang dapat Anda gunakan untuk membuka URL dalam programDi jendela interaktif IDLE, ketik berikut ini untuk mengimpor 8>>> _Halaman web yang akan Anda buka ada di URL berikut >>> _Untuk membuka halaman web, berikan _0 ke 8>>> _ _8 mengembalikan objek 3>>> _Untuk mengekstrak HTML dari halaman, pertama-tama gunakan metode 3 objek 5 , yang mengembalikan urutan byte. Kemudian gunakan _6 untuk mendekode byte menjadi string menggunakan>>> _Sekarang Anda dapat mencetak HTML untuk melihat konten halaman web >>> _Keluaran yang Anda lihat adalah kode HTML situs web, yang dirender browser Anda saat Anda mengunjungi 7Dengan _6, Anda mengakses situs web dengan cara yang sama seperti yang Anda lakukan di browser. Namun, alih-alih merender konten secara visual, Anda mengambil kode sumber sebagai teks. Sekarang setelah Anda memiliki HTML sebagai teks, Anda dapat mengekstrak informasi darinya dengan beberapa cara berbedaEkstrak Teks Dari HTML Dengan Metode StringSalah satu cara untuk mengekstrak informasi dari HTML halaman web adalah dengan menggunakan. Misalnya, Anda dapat menggunakan _9 untuk menelusuri teks HTML untuk tag 0 dan mengekstrak judul halaman webUntuk memulai, Anda akan mengekstrak judul halaman web yang Anda minta pada contoh sebelumnya. Jika Anda mengetahui indeks karakter pertama judul dan indeks karakter pertama tag 1 penutup, maka Anda dapat menggunakan a untuk mengekstrak judulKarena _9 mengembalikan indeks kemunculan pertama substring, Anda bisa mendapatkan indeks dari tag 0 pembuka dengan meneruskan string 4 ke 9>>> _Anda tidak menginginkan indeks dari tag 0. Anda ingin indeks dari judul itu sendiri. Untuk mendapatkan indeks huruf pertama pada judul, Anda dapat menambahkan panjang string 4 menjadi 8>>> _Sekarang dapatkan indeks dari tag _1 penutup dengan meneruskan string 0 ke 9>>> _Terakhir, Anda dapat mengekstrak judul dengan memotong string 2
HTML dunia nyata bisa jauh lebih rumit dan jauh lebih sulit diprediksi daripada HTML di halaman profil Aphrodite. Inilah halaman profil lain dengan beberapa HTML yang lebih berantakan yang dapat Anda gosok >>> 0Coba ekstrak judul dari URL baru ini menggunakan metode yang sama seperti pada contoh sebelumnya >>> 1Ups. Ada sedikit campuran HTML dengan judulnya. Kenapa begitu? HTML untuk halaman 3 terlihat mirip dengan halaman 4, tetapi ada sedikit perbedaan. Tag 0 pembuka memiliki spasi ekstra sebelum kurung sudut penutup ( 6), menjadikannya sebagai 7 _8 mengembalikan 9 karena substring yang tepat 4 tidak ada. Ketika _9 ditambahkan ke 02, yaitu 03, variabel 04 diberi nilai 05Karakter pada indeks 05 dari string 2 adalah karakter baris baru ( 08) tepat sebelum braket sudut bukaan ( 09) dari tag 10. Ini berarti bahwa _11 mengembalikan semua HTML yang dimulai dengan baris baru itu dan diakhiri tepat sebelum tag 1Masalah semacam ini dapat terjadi dengan cara yang tak terduga yang tak terhitung jumlahnya. Anda memerlukan cara yang lebih andal untuk mengekstrak teks dari HTML Hilangkan iklanKenali Ekspresi RegulerEkspresi reguler—atau singkatnya regex—adalah pola yang dapat Anda gunakan untuk mencari teks dalam string. Python mendukung ekspresi reguler melalui modul 13 pustaka standarCatatan. Ekspresi reguler tidak khusus untuk Python. Mereka adalah konsep pemrograman umum dan didukung dalam banyak bahasa pemrograman Untuk bekerja dengan ekspresi reguler, hal pertama yang perlu Anda lakukan adalah mengimpor modul 13>>> 2Ekspresi reguler menggunakan karakter khusus yang disebut metakarakter untuk menunjukkan pola yang berbeda. Misalnya, karakter asterisk ( 15) singkatan nol atau lebih contoh apa pun yang datang tepat sebelum asteriskDalam contoh berikut, Anda menggunakan _16 untuk menemukan teks apa pun di dalam string yang cocok dengan ekspresi reguler tertentu>>> 3Argumen pertama dari _17 adalah ekspresi reguler yang ingin Anda cocokkan, dan argumen kedua adalah string yang akan diuji. Dalam contoh di atas, Anda mencari pola 18 dalam string 19Ekspresi reguler 18 cocok dengan bagian mana pun dari string yang dimulai dengan 21, diakhiri dengan 22, dan memiliki nol atau lebih contoh 23 di antara keduanya. _17 mengembalikan daftar semua kecocokan. String _19 cocok dengan pola ini, sehingga dikembalikan dalam daftarBerikut pola yang sama diterapkan pada string yang berbeda >>> 4Perhatikan bahwa jika tidak ditemukan kecocokan, maka 16 mengembalikan daftar kosongPencocokan pola peka huruf besar-kecil. Jika Anda ingin mencocokkan pola ini terlepas dari kasusnya, Anda dapat memberikan argumen ketiga dengan nilai 27>>> 5Anda dapat menggunakan titik ( _28) untuk mewakili karakter tunggal apa pun dalam ekspresi reguler. Misalnya, Anda dapat menemukan semua string yang berisi huruf 21 dan 22 dipisahkan oleh satu karakter sebagai berikut>>> 6Pola _31 di dalam ekspresi reguler berarti karakter apa pun yang diulang beberapa kali. Misalnya, Anda dapat menggunakan _32 untuk menemukan setiap substring yang dimulai dengan 21 dan diakhiri dengan 22, terlepas dari huruf—atau huruf—yang ada di antaranya>>> 7Seringkali, Anda menggunakan _35 untuk mencari pola tertentu di dalam string. Fungsi ini agak lebih rumit daripada 17 karena mengembalikan objek bernama 37 yang menyimpan berbagai kelompok data. Ini karena mungkin ada kecocokan di dalam kecocokan lainnya, dan 35 mengembalikan setiap kemungkinan hasilDetail _37 tidak relevan di sini. Untuk saat ini, ketahuilah bahwa memanggil _40 di 37 akan mengembalikan hasil pertama dan paling inklusif, yang dalam kebanyakan kasus adalah yang Anda inginkan>>> 8Ada satu fungsi lagi di modul _13 yang berguna untuk mengurai teks. , yang merupakan kependekan dari pengganti, memungkinkan Anda mengganti teks dalam string yang cocok dengan ekspresi reguler dengan teks baru. Ini berperilaku seperti metode string _44Argumen yang diteruskan ke _43 adalah ekspresi reguler, diikuti dengan teks pengganti, diikuti dengan string. Ini sebuah contoh>>> 9Mungkin itu tidak seperti yang Anda harapkan terjadi _43 menggunakan ekspresi reguler 47 untuk menemukan dan mengganti semuanya antara 09 pertama dan 6 terakhir, yang membentang dari awal 50 hingga akhir 51. Ini karena ekspresi reguler Python rakus, artinya mereka mencoba menemukan kecocokan yang paling lama saat karakter seperti 15 digunakanSebagai alternatif, Anda dapat menggunakan pola pencocokan non-greedy 53, yang bekerja dengan cara yang sama seperti 15 kecuali cocok dengan string teks sesingkat mungkin>>> 0Kali ini, _43 menemukan dua kecocokan, 50 dan 51, dan mengganti string 58 untuk kedua kecocokanHilangkan iklanEkstrak Teks Dari HTML Dengan Ekspresi RegulerBerbekal semua pengetahuan ini, sekarang coba parsing judul dari halaman profil lain, yang menyertakan baris HTML yang ditulis dengan agak asal-asalan ini _1Metode _9 akan mengalami kesulitan menangani ketidakkonsistenan di sini, tetapi dengan penggunaan ekspresi reguler yang cerdik, Anda dapat menangani kode ini dengan cepat dan efisien _2Perhatikan lebih dekat ekspresi reguler pertama dalam string 60 dengan memecahnya menjadi tiga bagian
Ekspresi reguler kedua, string _78, juga menggunakan non-greedy 71 untuk mencocokkan semua tag HTML dalam string 80. Dengan mengganti kecocokan apa pun dengan _81, 43 menghapus semua tag dan hanya mengembalikan teksCatatan. Pengikisan web dengan Python atau bahasa lainnya bisa membosankan. Tidak ada dua situs web yang diatur dengan cara yang sama, dan HTML seringkali berantakan. Selain itu, situs web berubah seiring waktu. Pengikis web yang berfungsi hari ini tidak dijamin berfungsi tahun depan—atau minggu depan, dalam hal ini Ekspresi reguler adalah alat yang ampuh bila digunakan dengan benar. Dalam pengantar ini, Anda baru saja menggores permukaannya. Untuk informasi selengkapnya tentang ekspresi reguler dan cara menggunakannya, lihat seri Dua Bagian Ekspresi Reguler. Regex dengan Python Periksa Pemahaman AndaPerluas blok di bawah untuk memeriksa pemahaman Anda Latihan. Mengikis Data Dari Situs WebTampilkan/Sembunyikan Tulis sebuah program yang mengambil HTML lengkap dari URL berikut >>> 3Kemudian gunakan _9 untuk menampilkan teks berikut Nama. dan Warna Favorit. (tidak termasuk spasi awal atau tag HTML akhir yang mungkin muncul di baris yang sama)Anda dapat memperluas blok di bawah ini untuk melihat solusinya Solusi. Mengikis Data Dari Situs WebTampilkan/Sembunyikan Pertama, impor fungsi _84 dari modul 85 _4Kemudian buka URL dan gunakan metode 5 dari objek 3 yang dikembalikan oleh 8 untuk membaca HTML halaman _5Metode _5 mengembalikan string byte, jadi Anda menggunakan 6 untuk mendekode byte menggunakan pengkodean UTF-8Sekarang setelah Anda memiliki sumber HTML halaman web sebagai string yang ditetapkan ke variabel 91, Anda dapat mengekstrak nama dan warna favorit Dionysus dari profilnya. Struktur HTML untuk profil Dionysus sama dengan profil Aphrodite yang Anda lihat sebelumnyaAnda bisa mendapatkan nama dengan menemukan string _92 dalam teks dan mengekstrak semua yang muncul setelah kemunculan string pertama dan sebelum tag HTML berikutnya. Artinya, Anda perlu mengekstrak semuanya setelah tanda titik dua ( 93) dan sebelum tanda kurung sudut pertama ( 09). Anda dapat menggunakan teknik yang sama untuk mengekstrak warna favoritLoop _95 berikut mengekstraksi teks ini untuk nama dan warna favorit _6Sepertinya ada banyak hal yang terjadi dalam perulangan 95 ini, tetapi ini hanya sedikit aritmatika untuk menghitung indeks yang tepat untuk mengekstraksi teks yang diinginkan. Silakan dan hancurkan
Di akhir perulangan, Anda menggunakan _17 untuk menampilkan teks yang diekstraksi. Hasil akhir terlihat seperti ini _7Solusi ini adalah salah satu dari banyak yang memecahkan masalah ini, jadi jika Anda mendapatkan hasil yang sama dengan solusi yang berbeda, maka Anda melakukannya dengan baik Saat Anda siap, Anda dapat melanjutkan ke bagian berikutnya Gunakan Parser HTML untuk Pengikisan Web dengan PythonMeskipun ekspresi reguler bagus untuk pencocokan pola secara umum, terkadang lebih mudah menggunakan parser HTML yang secara eksplisit dirancang untuk mengurai halaman HTML. Ada banyak alat Python yang ditulis untuk tujuan ini, tetapi perpustakaan Beautiful Soup adalah yang bagus untuk memulai Instal Sup CantikUntuk menginstal Beautiful Soup, Anda dapat menjalankan perintah berikut di terminal Anda _8Dengan perintah ini, Anda menginstal versi terbaru dari Beautiful Soup ke dalam lingkungan global Python Anda Hilangkan iklanBuat Objek >>> page = urlopen(url) _18Ketik program berikut ke jendela editor baru _9Program ini melakukan tiga hal
Objek 18 yang ditugaskan ke 24 dibuat dengan dua argumen. Argumen pertama adalah HTML yang akan diuraikan, dan argumen kedua, string 27, memberi tahu objek parser mana yang akan digunakan di belakang layar. _27 mewakili parser HTML bawaan PythonGunakan Objek >>> page = urlopen(url) _18Simpan dan jalankan program di atas. Setelah selesai dijalankan, Anda dapat menggunakan variabel 24 di jendela interaktif untuk mengurai konten 2 dengan berbagai caraCatatan. Jika Anda tidak menggunakan IDLE, maka Anda dapat menjalankan program Anda dengan bendera 32 untuk masuk ke mode interaktif. Sesuatu seperti _33 pertama-tama akan menjalankan program Anda dan kemudian meninggalkan Anda di REPL tempat Anda dapat menjelajahi objek AndaMisalnya, objek _18 memiliki metode 35 yang dapat Anda gunakan untuk mengekstrak semua teks dari dokumen dan secara otomatis menghapus semua tag HTMLKetik kode berikut ke jendela interaktif IDLE atau di akhir kode di editor Anda >>> 0Ada banyak baris kosong dalam keluaran ini. Ini adalah hasil dari karakter baris baru dalam teks dokumen HTML. Anda dapat menghapusnya dengan metode string _44 jika perluSeringkali, Anda hanya perlu mendapatkan teks tertentu dari dokumen HTML. Menggunakan Beautiful Soup terlebih dahulu untuk mengekstrak teks dan kemudian menggunakan metode string 9 terkadang lebih mudah daripada bekerja dengan ekspresi regulerNamun, terkadang tag HTML itu sendiri adalah elemen yang menunjukkan data yang ingin Anda ambil. Misalnya, mungkin Anda ingin mengambil URL untuk semua gambar di halaman. Tautan ini terdapat dalam atribut _38 dari 39 tag HTMLDalam hal ini, Anda dapat menggunakan _40 untuk mengembalikan daftar semua instance dari tag tertentu itu>>> 1Ini mengembalikan daftar semua _39 tag dalam dokumen HTML. Objek dalam daftar terlihat seperti string yang mewakili tag, tetapi sebenarnya itu adalah instance dari objek 42 yang disediakan oleh Beautiful Soup. _42 objek menyediakan antarmuka sederhana untuk bekerja dengan informasi yang dikandungnyaAnda dapat menjelajahi ini sedikit dengan terlebih dahulu membongkar 42 objek dari daftar>>> 2Setiap objek _42 memiliki properti 46 yang mengembalikan string yang berisi jenis tag HTML>>> 3Anda dapat mengakses atribut HTML dari objek 42 dengan meletakkan nama mereka di antara tanda kurung siku, sama seperti jika atribut adalah kunci dalam kamusMisalnya, tag _48 memiliki satu atribut, 38, dengan nilai 50. Demikian pula, tag HTML seperti tautan 51 memiliki dua atribut, 52 dan 53Untuk mendapatkan sumber gambar di halaman profil Dionysus, Anda mengakses atribut 38 menggunakan notasi kamus yang disebutkan di atas>>> 4Tag tertentu dalam dokumen HTML dapat diakses oleh properti dari objek 42. Misalnya, untuk mendapatkan tag _0 dalam dokumen, Anda dapat menggunakan properti 57>>> 5Jika Anda melihat sumber profil Dionysus dengan menavigasi ke halaman profil, mengklik kanan halaman, dan memilih Lihat sumber halaman, Anda akan melihat bahwa tag 0 ditulis dengan huruf besar semua dengan spasiBeautiful Soup secara otomatis membersihkan tag untuk Anda dengan menghapus spasi ekstra di tag pembuka dan garis miring asing ( 75) di tag penutupAnda juga dapat mengambil hanya string antara tag judul dengan properti 60 dari objek 42>>> 6Salah satu fitur Beautiful Soup adalah kemampuan untuk mencari jenis tag tertentu yang atributnya sesuai dengan nilai tertentu. Misalnya, jika Anda ingin menemukan semua tag 39 yang memiliki atribut ________9______38 sama dengan nilai 64, maka Anda dapat memberikan argumen tambahan berikut ke 65>>> ________12______7 Contoh ini agak sewenang-wenang, dan kegunaan teknik ini mungkin tidak terlihat dari contoh tersebut. Jika Anda menghabiskan waktu menjelajahi berbagai situs web dan melihat sumber halamannya, Anda akan melihat bahwa banyak situs web memiliki struktur HTML yang sangat rumit Saat mengorek data dari situs web dengan Python, Anda sering kali tertarik pada bagian tertentu dari halaman tersebut. Dengan meluangkan waktu melihat-lihat dokumen HTML, Anda dapat mengidentifikasi tag dengan atribut unik yang dapat Anda gunakan untuk mengekstrak data yang Anda butuhkan Kemudian, alih-alih mengandalkan ekspresi reguler yang rumit atau menggunakan 9 untuk menelusuri dokumen, Anda dapat langsung mengakses tag tertentu yang Anda minati dan mengekstrak data yang Anda perlukanDalam beberapa kasus, Anda mungkin menemukan bahwa Beautiful Soup tidak menawarkan fungsionalitas yang Anda butuhkan. Pustaka agak sulit untuk memulai tetapi menawarkan fleksibilitas yang jauh lebih banyak daripada Beautiful Soup untuk mem-parsing dokumen HTML. Anda mungkin ingin memeriksanya setelah merasa nyaman menggunakan Beautiful Soup Catatan. Pengurai HTML seperti Beautiful Soup dapat menghemat banyak waktu dan tenaga Anda saat menemukan data tertentu di halaman web. Namun, kadang-kadang HTML ditulis dengan sangat buruk dan tidak teratur bahkan pengurai canggih seperti Beautiful Soup tidak dapat menafsirkan tag HTML dengan benar Dalam hal ini, Anda sering menggunakan 9 dan teknik ekspresi reguler untuk mencoba mengurai informasi yang Anda perlukanBeautiful Soup bagus untuk mengorek data dari HTML situs web, tetapi tidak menyediakan cara apa pun untuk bekerja dengan formulir HTML. Misalnya, jika Anda perlu menelusuri beberapa kueri di situs web lalu mengorek hasilnya, maka Beautiful Soup saja tidak akan membantu Anda terlalu jauh. Hilangkan iklanPeriksa Pemahaman AndaPerluas blok di bawah untuk memeriksa pemahaman Anda Latihan. Parsing HTML Dengan Sup CantikTampilkan/Sembunyikan Tulis sebuah program yang mengambil HTML lengkap dari halaman di URL 68Menggunakan Beautiful Soup, cetak daftar semua tautan di halaman dengan mencari tag HTML dengan nama 69 dan ambil nilai yang diambil oleh atribut 52 dari setiap tagHasil akhir akan terlihat seperti ini 8Pastikan Anda hanya memiliki satu garis miring ( 75) antara URL dasar dan URL relatifAnda dapat memperluas blok di bawah ini untuk melihat solusinya Solusi. Parsing HTML Dengan Sup CantikTampilkan/Sembunyikan Pertama, impor fungsi _84 dari modul 85 dan kelas 18 dari paket 75 _9Setiap URL tautan pada halaman _76 adalah URL relatif, jadi buat variabel 77 dengan URL dasar situs web _0Anda dapat membuat URL lengkap dengan menggabungkan 77 dengan URL relatifSekarang buka halaman _76 dengan 8 dan gunakan 5 untuk mendapatkan sumber HTML _1Dengan sumber HTML diunduh dan diterjemahkan, Anda dapat membuat objek 18 baru untuk mengurai HTML _2 _83 mengembalikan daftar semua tautan di sumber HTML. Anda dapat mengulangi daftar ini untuk mencetak semua tautan di halaman web _3Anda dapat mengakses URL relatif untuk setiap tautan melalui subskrip ________9______84. Gabungkan nilai ini dengan _77 untuk membuat 86 penuhSaat Anda siap, Anda dapat melanjutkan ke bagian berikutnya Berinteraksi Dengan Formulir HTMLModul 6 yang telah Anda kerjakan sejauh ini dalam tutorial ini sangat cocok untuk meminta konten halaman web. Namun terkadang, Anda perlu berinteraksi dengan halaman web untuk mendapatkan konten yang Anda butuhkan. Misalnya, Anda mungkin perlu mengirimkan formulir atau mengklik tombol untuk menampilkan konten tersembunyiCatatan. Tutorial ini diadaptasi dari bab “Berinteraksi Dengan Web” di Python Basics. Pengantar Praktis untuk Python 3. Jika Anda menikmati apa yang Anda baca, maka pastikan untuk memeriksa sisa buku ini Pustaka standar Python tidak menyediakan sarana bawaan untuk bekerja dengan halaman web secara interaktif, tetapi banyak paket pihak ketiga tersedia dari PyPI. Di antaranya, MechanicalSoup adalah paket yang populer dan relatif mudah digunakan Intinya, MechanicalSoup menginstal apa yang dikenal sebagai browser tanpa kepala, yang merupakan browser web tanpa antarmuka pengguna grafis. Browser ini dikendalikan secara terprogram melalui program Python Instal MechanicalSoupAnda dapat menginstal MechanicalSoup dengan 88 di terminal Anda _4Anda harus menutup dan memulai kembali sesi IDLE Anda agar MechanicalSoup dapat dimuat dan dikenali setelah diinstal Buat Objek >>> page = urlopen(url) _89Ketik yang berikut ke dalam jendela interaktif IDLE >>> 5 _89 objek mewakili browser web tanpa kepala. Anda dapat menggunakannya untuk meminta halaman dari Internet dengan mengirimkan URL ke metode 91 mereka>>> 6 _92 adalah objek 93 yang menyimpan respons dari permintaan URL dari browser>>> 7Angka _94 mewakili kode status yang dikembalikan oleh permintaan. Kode status _94 berarti permintaan berhasil. Permintaan yang gagal mungkin menampilkan kode status 96 jika URL tidak ada atau 97 jika ada kesalahan server saat membuat permintaanMechanicalSoup menggunakan Beautiful Soup untuk mengurai HTML dari permintaan, dan 92 memiliki atribut 99 yang mewakili objek 18>>> ________16______8 Anda dapat melihat HTML dengan memeriksa atribut ________9______99 >>> 9Perhatikan halaman ini memiliki _02 dengan 03 elemen untuk nama pengguna dan kata sandiHilangkan iklanKirim Formulir Dengan MechanicalSoupBuka halaman _04 dari contoh sebelumnya di browser dan lihat sendiri sebelum melanjutkanCoba ketikkan kombinasi nama pengguna dan kata sandi acak. Jika Anda salah menebak, maka pesan Nama pengguna atau kata sandi salah. ditampilkan di bagian bawah halaman Namun, jika Anda memberikan kredensial login yang benar, Anda akan dialihkan ke halaman ________9______76 UsernamePassword 06 07Pada contoh berikutnya, Anda akan melihat cara menggunakan MechanicalSoup untuk mengisi dan mengirimkan formulir ini menggunakan Python Bagian penting dari kode HTML adalah form login—yaitu, semua yang ada di dalam tag 02. _02 di halaman ini memiliki atribut 10 yang disetel ke 11. Formulir ini berisi dua elemen 03, satu bernama 13 dan yang lainnya bernama 14. Elemen _03 ketiga adalah tombol KirimSekarang setelah Anda mengetahui struktur yang mendasari formulir login, serta kredensial yang diperlukan untuk masuk, lihat program yang mengisi formulir dan mengirimkannya Di jendela editor baru, ketik program berikut 0Simpan file dan tekan F5 untuk menjalankannya. Untuk mengonfirmasi bahwa Anda telah berhasil masuk, ketik berikut ini ke dalam jendela interaktif. >>> 1Sekarang uraikan contoh di atas
Di jendela interaktif, Anda mengonfirmasi bahwa pengiriman berhasil dialihkan ke halaman 76. Jika ada yang salah, maka nilai 32 akan tetap menjadi 33Catatan. Peretas dapat menggunakan program otomatis seperti di atas untuk memaksa login dengan cepat mencoba berbagai nama pengguna dan kata sandi hingga mereka menemukan kombinasi yang berfungsi Selain ini sangat ilegal, hampir semua situs web saat ini mengunci Anda dan melaporkan alamat IP Anda jika mereka melihat Anda membuat terlalu banyak permintaan yang gagal, jadi jangan coba-coba Sekarang setelah Anda memiliki set variabel _34, saatnya untuk secara terprogram mendapatkan URL untuk setiap tautan pada halaman 76Untuk melakukan ini, Anda menggunakan _36 lagi, kali ini meneruskan string 21 untuk memilih semua elemen jangkar 38 pada halaman>>> 2Sekarang Anda dapat mengulangi setiap tautan dan mencetak atribut 52>>> 3URL yang terkandung dalam setiap atribut _52 adalah URL relatif, yang tidak terlalu membantu jika Anda ingin membukanya nanti menggunakan MechanicalSoup. Jika Anda mengetahui URL lengkapnya, Anda dapat menetapkan bagian yang diperlukan untuk membuat URL lengkapDalam hal ini, URL dasar hanya ________12______41. Kemudian Anda dapat menggabungkan URL dasar dengan URL relatif yang ditemukan di atribut 38>>> 4Anda dapat melakukan banyak hal hanya dengan _91, 36, dan 45. Konon, MechanicalSoup mampu melakukan lebih banyak lagi. Untuk mempelajari lebih lanjut tentang MechanicalSoup, lihat dokumen resmiHilangkan iklanPeriksa Pemahaman AndaPerluas blok di bawah untuk memeriksa pemahaman Anda Latihan. Kirim Formulir Dengan MechanicalSoupTampilkan/Sembunyikan Gunakan MechanicalSoup untuk memberikan nama pengguna yang benar ( 06) dan kata sandi ( 07) ke formulir login yang terletak di URL 17Setelah formulir dikirimkan, tampilkan judul halaman saat ini untuk menentukan bahwa Anda telah dialihkan ke halaman 76Program Anda harus mencetak teks 50Anda dapat memperluas blok di bawah ini untuk melihat solusinya Solusi. Kirim Formulir Dengan MechanicalSoupTampilkan/Sembunyikan Pertama, impor paket _51 dan buat objek 52 5Arahkan browser ke halaman login dengan mengirimkan URL ke 53 dan ambil HTML dengan atribut 99 6 18 adalah 18 contoh. Karena halaman hanya berisi satu formulir, Anda dapat mengakses formulir melalui 24. Menggunakan _36, pilih input nama pengguna dan kata sandi dan isi dengan nama pengguna 25 dan kata sandi 26 7Setelah formulir diisi, Anda dapat mengirimkannya dengan 27 8Jika Anda mengisi formulir dengan nama pengguna dan kata sandi yang benar, maka 34 seharusnya mengarah ke halaman 76. Anda dapat memastikannya dengan mencetak judul halaman yang ditetapkan ke 64 _9Anda akan melihat teks berikut ditampilkan _0Jika sebaliknya Anda melihat teks _65 atau yang lainnya, maka pengiriman formulir gagalSaat Anda siap, Anda dapat melanjutkan ke bagian berikutnya Berinteraksi Dengan Situs Web Secara Real TimeTerkadang Anda ingin dapat mengambil data waktu nyata dari situs web yang menawarkan informasi yang terus diperbarui Di hari-hari kelam sebelum Anda mempelajari pemrograman Python, Anda harus duduk di depan browser, mengklik tombol Refresh untuk memuat ulang halaman setiap kali Anda ingin memeriksa apakah konten yang diperbarui tersedia. Tapi sekarang Anda dapat mengotomatiskan proses ini menggunakan metode 91 dari objek MechanicalSoup 89Buka browser pilihan Anda dan arahkan ke URL 68Halaman _69 ini mensimulasikan lemparan dadu bersisi enam, memperbarui hasilnya setiap kali Anda me-refresh browser. Di bawah, Anda akan menulis program yang berulang kali menggores halaman untuk mendapatkan hasil baruHal pertama yang perlu Anda lakukan adalah menentukan elemen mana pada halaman yang berisi hasil die roll. Lakukan ini sekarang dengan mengklik kanan di manapun pada halaman dan memilih View page source. Sedikit lebih dari separuh kode HTML adalah tag 70 yang terlihat seperti ini _1Teks tag _70 mungkin berbeda untuk Anda, tetapi ini adalah elemen halaman yang Anda perlukan untuk menggores hasilnyaCatatan. Untuk contoh ini, Anda dapat dengan mudah memeriksa bahwa hanya ada satu elemen di halaman dengan 72. Meskipun atribut _73 seharusnya unik, dalam praktiknya Anda harus selalu memeriksa bahwa elemen yang Anda minati telah teridentifikasi secara unikSekarang mulailah dengan menulis program sederhana yang membuka halaman 69, menggores hasilnya, dan mencetaknya ke konsol _2Contoh ini menggunakan metode _18 objek 36 untuk menemukan elemen dengan 77. String _78, yang Anda teruskan ke 36, menggunakan pemilih ID CSS 80 untuk menunjukkan bahwa 81 adalah nilai 73Untuk mendapatkan hasil baru secara berkala, Anda harus membuat loop yang memuat halaman di setiap langkah. Jadi segala sesuatu di bawah garis _83 dalam kode di atas harus masuk ke dalam tubuh loopUntuk contoh ini, Anda menginginkan empat lemparan dadu dengan interval sepuluh detik. Untuk melakukannya, baris terakhir kode Anda perlu memberi tahu Python untuk berhenti berjalan selama sepuluh detik. Anda dapat melakukan ini dengan _84 dari modul 85 Python. Metode _84 mengambil satu argumen yang mewakili jumlah waktu untuk tidur dalam hitungan detikBerikut adalah contoh yang menggambarkan cara kerja ________12______87 _3Saat Anda menjalankan kode ini, Anda akan melihat bahwa pesan 88 tidak ditampilkan hingga lima detik berlalu sejak fungsi 17 pertama dijalankanUntuk contoh die roll, Anda harus meneruskan nomor 90 ke 87. Inilah program yang diperbarui _4Saat Anda menjalankan program, Anda akan segera melihat hasil pertama yang dicetak ke konsol. Setelah sepuluh detik, hasil kedua ditampilkan, lalu yang ketiga, dan terakhir yang keempat. Apa yang terjadi setelah hasil keempat dicetak? Program terus berjalan selama sepuluh detik sebelum akhirnya berhenti. Itu buang-buang waktu. Anda dapat menghentikannya dengan menggunakan pernyataan 92 untuk menjalankan 93 hanya untuk tiga permintaan pertama _5Dengan teknik seperti ini, Anda dapat mengikis data dari situs web yang memperbarui datanya secara berkala. Namun, Anda harus menyadari bahwa meminta halaman berkali-kali secara berurutan dapat dianggap sebagai penggunaan situs web yang mencurigakan, atau bahkan berbahaya. Penting. Sebagian besar situs web menerbitkan dokumen Persyaratan Penggunaan. Anda sering dapat menemukan tautannya di footer situs web Selalu baca dokumen ini sebelum mencoba mengorek data dari situs web. Jika Anda tidak dapat menemukan Ketentuan Penggunaan, coba hubungi pemilik situs web dan tanyakan apakah mereka memiliki kebijakan terkait volume permintaan Kegagalan untuk mematuhi Ketentuan Penggunaan dapat mengakibatkan IP Anda diblokir, jadi berhati-hatilah Bahkan mungkin untuk merusak server dengan jumlah permintaan yang berlebihan, sehingga Anda dapat membayangkan bahwa banyak situs web mengkhawatirkan volume permintaan ke server mereka. Selalu periksa Ketentuan Penggunaan dan hormati saat mengirim banyak permintaan ke situs web Hilangkan iklanKesimpulanMeskipun memungkinkan untuk mengurai data dari Web menggunakan alat di pustaka standar Python, ada banyak alat di PyPI yang dapat membantu menyederhanakan prosesnya. Dalam tutorial ini, Anda belajar caranya
Menulis program pengikisan web otomatis itu menyenangkan, dan Internet tidak kekurangan konten yang dapat menghasilkan semua jenis proyek menarik Ingatlah, tidak semua orang ingin Anda menarik data dari server web mereka. Selalu periksa Ketentuan Penggunaan situs web sebelum Anda mulai mengorek, dan hormati cara mengatur waktu permintaan web Anda sehingga Anda tidak membanjiri server dengan lalu lintas Kode sumber. Klik di sini untuk mengunduh kode sumber gratis yang akan Anda gunakan untuk mengumpulkan dan mengurai data dari Web Sumber daya tambahanUntuk informasi lebih lanjut tentang pengikisan web dengan Python, lihat sumber daya berikut
Catatan. Jika Anda menikmati apa yang Anda pelajari dalam contoh ini dari Python Basics. Pengantar Praktis untuk Python 3, lalu pastikan untuk memeriksa sisa buku ini Tandai sebagai Selesai 🐍 Trik Python 💌 Dapatkan Trik Python singkat & manis yang dikirim ke kotak masuk Anda setiap beberapa hari. Tidak pernah ada spam. Berhenti berlangganan kapan saja. Dikuratori oleh tim Real Python Kirimi Saya Trik Python » Tentang David Amos David adalah seorang penulis, pemrogram, dan ahli matematika yang bersemangat menjelajahi matematika melalui kode » Lebih lanjut tentang DaudSetiap tutorial di Real Python dibuat oleh tim pengembang sehingga memenuhi standar kualitas tinggi kami. Anggota tim yang mengerjakan tutorial ini adalah Aldren Geir Arne Joanna Yakub Kate Martin Filipina Master Keterampilan Python Dunia Nyata Dengan Akses Tanpa Batas ke Python Nyata Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas pakar Pythonista Tingkatkan Keterampilan Python Anda » Guru Keterampilan Python Dunia Nyata Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas ahli Pythonista Tingkatkan Keterampilan Python Anda » Bagaimana menurut anda? Nilai artikel ini Tweet Bagikan Bagikan EmailApa takeaway # 1 Anda atau hal favorit yang Anda pelajari? Kiat Berkomentar. Komentar yang paling berguna adalah yang ditulis dengan tujuan belajar dari atau membantu siswa lain. dan dapatkan jawaban atas pertanyaan umum di portal dukungan kami Bagaimana cara mengekstrak teks dari HTML dengan python?Menggunakan Parsel untuk Mengekstrak Teks dari HTML dengan Python . Dimulai dengan Parsel Membuat Selector Mengekstraksi Teks Menggunakan Pemilih CSS Mengekstrak Teks Menggunakan Pemilih XPath Menghapus Elemen Membuat Skrip Scraping Web Anda Bagaimana cara mengekstrak teks tertentu dari situs web dengan python?Untuk mengekstrak data menggunakan pengikisan web dengan python, Anda harus mengikuti langkah-langkah dasar ini. . Temukan URL yang ingin Anda kikis Memeriksa Halaman Temukan data yang ingin Anda ekstrak Tulis kodenya Jalankan kode dan ekstrak datanya Simpan data dalam format yang diperlukan Bagaimana cara mengekstrak teks dari HTML?str = extractHTMLText( code ) mem-parsing kode HTML dalam kode dan mengekstrak teks.
Bagaimana cara mengambil konten HTML dengan python?Solusi paling sederhana adalah sebagai berikut. . permintaan impor. cetak (permintaan. dapatkan(url = 'https. //google. com'). teks). impor urllib. permintaan sebagai r. halaman = r. urlopen('https. //google. com'). impor urllib. permintaan sebagai r. halaman = r. urlopen('https. //google. com'). <. doctype html>. < |