Mengikis Web

Mengikis laman web menggunakan Python

Mengikis laman web menggunakan Python
Pengikisan web adalah cara automatik untuk mengekstrak dan memproses maklumat dari laman web internet dalam jumlah yang sangat banyak. Data di laman web internet tidak tersusun, yang dapat dikumpulkan dan disusun melalui pengikisan web. Enjin carian seperti Google, Bing, Yahoo mempunyai bot yang mengikis data dari laman web internet dan mengindeksnya di halaman carian mereka. Data juga dapat diekstrak menggunakan API, yang mungkin merupakan salah satu cara terbaik untuk mengekstrak data dari web. Laman web terkenal seperti Facebook, Google, Amazon menyediakan pengguna dengan API berstruktur dengan baik untuk berinteraksi dengan data, tetapi anda tidak akan melihat API ini di mana-mana.

Contohnya, jika anda ingin mendapatkan kemas kini berkala mengenai produk kegemaran anda untuk tawaran diskaun atau anda mahu mengautomasikan proses memuat turun episod musim kegemaran anda satu demi satu, dan laman web tidak mempunyai API untuk itu maka satu-satunya pilihan anda tinggal dengan mengikis web.Pengikisan laman web mungkin tidak sah di beberapa laman web, bergantung pada sama ada laman web membenarkannya atau tidak. Laman web menggunakan "robot.fail txt ”untuk secara jelas menentukan URL yang tidak dibenarkan dibatalkan. Anda boleh memeriksa sama ada laman web membenarkannya atau tidak dengan menambahkan "robot.txt ”dengan nama domain laman web. Contohnya, https: // www.google.com / robot.txt

Dalam artikel ini, kami akan menggunakan Python untuk mengikis kerana sangat mudah untuk disiapkan dan digunakan. Ia mempunyai banyak perpustakaan pihak ketiga dan yang boleh digunakan untuk mengikis dan mengatur data. Kami akan menggunakan dua pustaka Python "urllib" untuk mengambil halaman web dan "BeautifulSoup" untuk menguraikan halaman web untuk menerapkan operasi pengaturcaraan.

Bagaimana Pengikisan Web berfungsi?

Kami menghantar permintaan ke laman web, dari mana anda mahu mengikis data. Laman web akan menjawab permintaan tersebut dengan kandungan halaman HTML. Kemudian, kami dapat menghuraikan halaman web ini ke BeautifulSoup untuk proses selanjutnya. Untuk mengambil laman web, kami akan menggunakan perpustakaan "urllib" di Python.

Urllib akan memuat turun kandungan halaman web dalam HTML. Kami tidak dapat menerapkan operasi rentetan ke laman web HTML ini untuk pengekstrakan kandungan dan pemprosesan lebih lanjut. Kami akan menggunakan perpustakaan Python "BeautifulSoup" yang akan menguraikan kandungan dan mengekstrak data yang menarik.

Mengikis artikel dari Linuxhint.com

Sekarang kita mempunyai idea bagaimana kerja mengikis web berfungsi, mari kita lakukan latihan. Kami akan cuba mengikis tajuk dan pautan artikel dari Linuxhint.com. Oleh itu, buka https: // linuxhint.com / dalam penyemak imbas anda.

Sekarang tekan CRTL + U untuk melihat kod sumber HTML dari laman web.

Salin kod sumber, dan pergi ke https: // htmlformatter.com / untuk memperagakan kod. Setelah memperagakan kod, mudah untuk memeriksa kod dan mencari maklumat menarik.

Sekarang, salin semula kod yang diformat dan tampal di editor teks kegemaran anda seperti atom, teks luhur dll. Sekarang kita akan mengikis maklumat menarik menggunakan Python. Taipkan perkara berikut

// Pasang perpustakaan sup yang indah, urllib datang
dipasang di Python
ubuntu @ ubuntu: ~ $ sudo pip3 pasang bs4
ubuntu @ ubuntu: ~ $ python3
Python 3.7.3 (lalai, 7 Okt 2019, 12:56:13)
[GCC 8.3.0] pada linux

Ketik "bantuan", "hak cipta", "kredit" atau "lesen" untuk maklumat lebih lanjut.

// Import uribib
>>> mengimport urlib.permintaan
// Import BeautifulSoup
>>> dari bs4 import BeautifulSoup
// Masukkan URL yang ingin anda ambil
>>> my_url = 'https: // linuxhint.com / '
// Minta halaman web URL menggunakan perintah urlopen
>>> pelanggan = urllib.permintaan.urlopen (my_url)
// Simpan laman web HTML dalam pemboleh ubah "html_page"
>>> html_page = pelanggan.baca ()
// Tutup sambungan URL setelah mengambil halaman web
>>> pelanggan.tutup ()
// uraikan laman web HTML ke BeautifulSoup untuk mengikis
>>> page_soup = BeautifulSoup (html_page, "html.penghurai ")

Sekarang mari kita lihat kod sumber HTML yang baru saja kita salin dan tampal untuk mencari perkara yang menarik minat kita.

Anda dapat melihat bahawa artikel pertama yang disenaraikan di Linuxhint.com diberi nama "74 Contoh Pengendali Bash", cari ini dalam kod sumber. Ia dilampirkan di antara tag header, dan kodnya adalah



class = "kategori-1561"> Pengaturcaraan BASH


title = "74 Contoh Operator Bash"> 74 Operator Bash
Contoh


Kod yang sama berulang-ulang dengan perubahan hanya tajuk artikel dan pautan. Artikel seterusnya mempunyai kod HTML berikut



class = "kategori-1343"> Ubuntu
Varnis


title = "Cara mengatur cache Varnish di Ubuntu 18.04 ">
Cara menyediakan cache Varnish di Ubuntu 18.04


Anda dapat melihat bahawa semua artikel termasuk kedua-dua ini dilampirkan dalam yang sama "

"Tag dan gunakan" entri-tajuk "kelas yang sama. Kita dapat menggunakan fungsi "findAll" di perpustakaan Sup Indah untuk mencari dan menyenaraikan semua "

"Mempunyai kelas" tajuk kemasukan ". Taipkan perkara berikut di konsol Python anda

// Perintah ini akan menemui semua "

Elemen tag yang dinamakan kelas
"Tajuk kemasukan". Keluaran akan disimpan dalam pelbagai.
>>> artikel = page_soup.cariSemua ("h2" ,
"class": "entry-title")
// Jumlah artikel yang terdapat di muka depan Linuxhint.com
>>> len (artikel)
102
// Pertama diekstrak "

Elemen tag yang mengandungi nama dan pautan artikel
>>> artikel [0]


tajuk = "74 Contoh Pengendali Bash">
74 Contoh Pengendali Bash


// Diekstrak kedua "

Elemen tag yang mengandungi nama dan pautan artikel
>>> artikel [1]


title = "Cara mengatur cache Varnish di Ubuntu 18.04 ">
Cara menyediakan cache Varnish di Ubuntu 18.04


// Hanya memaparkan teks dalam tag HTML menggunakan fungsi teks
>>> artikel [1].teks
'Cara mengatur cache Varnish di Ubuntu 18.04 '

Sekarang kita mempunyai senarai semua 102 HTML “

Elemen tag yang mengandungi pautan artikel dan tajuk artikel. Kami dapat mengekstrak pautan dan tajuk artikel. Untuk mengekstrak pautan dari ", Kita boleh menggunakan kod berikut

// Kod berikut akan mengekstrak pautan dari yang pertama

elemen teg
>>> untuk pautan dalam artikel [0].find_all ('a', href = Betul):
... cetak (pautan ['href'])

https: // linuxhint.com / bash_operator_contoh /

Sekarang kita dapat menulis untuk loop yang berulang setiap “

Elemen tag dalam senarai "artikel" dan ekstrak pautan artikel dan tajuk.

>>> untuk i dalam jarak (0,10):
... cetak (artikel [i].teks)
… Untuk pautan dalam artikel [i].find_all ('a', href = Betul):
… Cetak (pautan ['href'] + "\ n")

74 Contoh Pengendali Bash
https: // linuxhint.com / bash_operator_contoh /
Cara menyediakan cache Varnish di Ubuntu 18.04
https: // linuxhint.com / varnish_cache_ubuntu_1804 /
PineTime: Jam Tangan Pintar Mesra Linux
https: // linuxhint.com / pinetime_linux_smartwatch /
10 Komputer riba Linux Murah Terbaik untuk Dibeli dengan Belanjawan
https: // linuxhint.com / best_cheap_linux_laptops /
HD Remastered Games untuk Linux yang Tidak Pernah Melancarkan Linux…
https: // linuxhint.com / hd_remastered_games_linux /
60 Aplikasi Rakaman Skrin FPS untuk Linux
https: // linuxhint.com / 60_fps_screen_recording_apps_linux /
74 Contoh Pengendali Bash
https: // linuxhint.com / bash_operator_contoh /
... hirup ..

Begitu juga, anda menyimpan hasil ini ke fail JSON atau CSV.

Kesimpulannya

Tugas harian anda bukan hanya pengurusan fail atau pelaksanaan perintah sistem. Anda juga boleh mengautomasikan tugas yang berkaitan dengan web seperti automasi muat turun fail atau pengekstrakan data dengan mengikis web di Python. Artikel ini hanya terbatas pada pengekstrakan data yang sederhana tetapi anda boleh melakukan automasi tugas besar dengan menggunakan "urllib" dan "BeautifulSoup".

OpenTTD vs Simutrans
Membuat simulasi pengangkutan anda sendiri boleh menyeronokkan, santai dan sangat menarik. Itulah sebabnya anda perlu memastikan bahawa anda mencuba s...
Tutorial OpenTTD
OpenTTD adalah salah satu permainan simulasi perniagaan yang paling popular di luar sana. Dalam permainan ini, anda perlu membuat perniagaan pengangku...
SuperTuxKart untuk Linux
SuperTuxKart adalah tajuk hebat yang direka untuk membawa anda pengalaman Mario Kart secara percuma pada sistem Linux anda. Ia cukup mencabar dan meny...