Pengikisan web: Bangun bot web berbasis html dengan indah

0

Ini berbicara tentang penyederhanaan web dan metode penggunaan Modul yang indah dan meminta untuk membuat bot situs web untuk mengambil data web.

Seperti yang disebutkan dalam Bab 3 sebelumnya tentang “Cara Menulis, Parse, Baca File CSV Dengan Data Tergerak”, kami akan membahas cara menentukan data web untuk mengikis. Itu karena ini adalah salah satu tujuan utama mengapa kami suka belajar Python sebagai pemasar digital.

Jadi dalam tutorial Python ini untuk pemasar digital 4, saya akan memandu Anda melalui konsep dasar, dan metode. Ini dengan menggunakan BeautifulSoup dan permintaan yang perlu Anda ketahui untuk menentukan data web dan gesekan. Lebih baik jika Anda memahami cara membaca HTML, CSS, dan JavaScript di bagian ini. Tapi tidak apa -apa jika Anda belum melakukannya karena tujuannya adalah untuk menemukan data yang terletak saat ini. Dan juga untuk mempelajari beberapa metode untuk mengikis data tertentu untuk tujuan pemasaran digital.

Selama pelajaran tutorial Python, saya akan mengambil Ring.com sebagai contoh untuk menulis kode dan mengikis semua penawaran dan harga terbaru. Pada akhir tutorial Python, Anda dapat mengidentifikasi di mana elemen data yang Anda harapkan berada di halaman dan mengikis semuanya dalam hitungan menit.

Daftar Isi: Buat bot situs web untuk mengikis data situs web tertentu menggunakan BeautifulSoup

  • Identifikasi bagian data pada halaman target
  • Tentukan data untuk menguraikan dan mengikis
  • Buat loop untuk mengikis semua bagian data yang ditentukan
  • Lulus data yang hilang di beberapa bagian
  • Simpan data ke dalam file CSV
  • Skrip Python lengkap dari Bot Situs Web

Identifikasi bagian data pada halaman target

Seperti yang dapat Anda lihat di sini, ada banyak bundel dan penawaran produk cincin yang mungkin diperbarui secara tidak teratur. Jika Anda adalah reseller atau pesaing cincin, Anda pasti ingin menyesuaikan strategi pemasaran dan penetapan harga produk, agar tingkat konversi tidak akan terpengaruh jika penjualan sangat penting untuk bisnis Anda.

Untuk menemukan lokasi data, kita perlu menggunakan alat pengembang browser dan memeriksa kode sumber web. Saya menganggap Chrome sebagai contoh, Anda dapat memilih produk dan klik kanan untuk memilih Inspect.

Kami bertujuan untuk mengikis data dari tajuk utama, sub -headline, harga reguler, harga promosi, deskripsi, dan URL produk. Berdasarkan target pengikis data ini, kami mencoba untuk melihat ke dalam kode dan mencari tahu bagian ini atau apa yang kami sebut divisi, yang mencakup semua data yang kami targetkan untuk mengikis:

<Div class = "PLP-Product" .......

Anda mengetahui sisa informasi produk semua dimulai dengan divisi yang sama:

<Div class = "PLP-Product" .......

Untuk melihat apakah ini benar, kita dapat mulai menggunakan metode: find (), dan find_all ()

(Catatan: Saya tidak akan membahas tentang cara mengimpor BeautifulSoup, meminta modul. Jika Anda ingin mempelajari lebih lanjut, silakan periksa artikel sebelumnya:

Pengikisan web – temukan dan temukan semua fungsi

Pertama -tama, mari kita membuat variabel yang disebut RingWeb, Ringoffers dan RingProduct

RingWeb = requests.get ('https://ring.com/collections/offers') .text

Ringoffers = Beautifulsoup (RingWeb, 'LXML')

Metode Find () digunakan untuk menemukan tindakan pengikis Anda dan mendapatkan respons data dari lokasi ini. Karena jalurnya, <div class = "PLP-Product" .......

jadi kita bisa menulis satu baris kode

RingProduct = Ringoffers.find ('Div', kelas _ = 'PLP-Product')

Dalam baris kode ini, kami mendefinisikan variabel, ringrproduct yang mewakili data jalur target di bawah Ringoffers. Perlu diingat, bahwa dalam metode Python, kami biasanya menggunakan koma untuk membagi kode sumber HTML dan menggunakan kutipan tunggal untuk setiap kode sumber. Mengenai kelas, kita perlu menggunakan class_ =, karena class = singkatan dari fungsi lain dalam python.

Jika kami mencoba mencetak ini dan perintah B, Anda dapat melihat baris kode ini sudah dapat mengambil data bagian. Bekerja.

Karena Ring.com tidak hanya memiliki satu set bundel untuk dijual di halaman penawaran, jadi kita perlu menggunakan metode lain find_all (). Kami hanya perlu mengganti find () dengan find_all (), Anda dapat melihat semua data bagian bundel dihasilkan.

Tentukan data untuk menguraikan dan mengikis

Sekarang kami mulai mengurai data bagian target dan data spesifik yang ingin kami kikis, seperti yang kami sebutkan sebelumnya dalam artikel ini.

Pertama -tama, ini adalah judul produk

Kami dapat memeriksa dan melihat dari alat pengembang, Cincin menawarkan halaman H4 hanya mewakili tajuk produk bundel, sehingga kami dapat langsung menulis satu baris kode:

headline = ringproduct.h4.text
cetak (judul)

Dalam Python, kami membagi jalur dengan menggunakan titik kecuali untuk jalur dalam metode. Saat kami mengikis data string, sehingga kami dapat menggunakan teks setelah H4.

Kemudian, sub -garis bawahnya dan deskripsinya

Kita dapat melihat ada dua tempat yang menggunakan H6 (Subheadline dan Deskripsi). Sangat berbeda dari tajuk, kita perlu menggunakan metode find () dan menemukan data H6 tertentu

Subheadline = RingProduct.Find ('H6', Class _ = 'Sub-Title Size-Xs'). Teks
Cetak (Subheadline)

Deskripsi = RingProduct.Find ('H6', Class _ = 'Produk-deskripsi Font__Exlight'). Teks
cetak (deskripsi)

Anda akan mengetahui tidak semua bundel produk yang memiliki subkini. Di Python, kita perlu meneruskan data yang hilang untuk menghindari kesalahan dalam menjalankan file skrip. Saya akan membicarakannya sebentar lagi.

Kemudian, itu adalah harga dan harga promosi reguler

promote_price = ringproduct.find ('span', class _ = 'reguler-price'). Teks
cetak (promote_price)

reguler_price = ringproduct.find ('span', class _ = 'perbandingan-harga'). Teks
cetak (reguler_price)

Terakhir, ini adalah URL pendaratan produk

Baris kode:

Product_url = RingProduct.A ['href']
Product_link = f'https: //ring.com {product_url} '
cetak (product_link)

Pada dasarnya, hanya ada satu URL unik yang ditampilkan dalam kode sumber dari setiap bundel produk. Misalnya, jalur pendaratan starter kit produk adalah koleksi/penawaran/produk/starter-kit. Jadi kita bisa mengabaikan nilai mana yang kita bertujuan untuk mengikis dan secara langsung memanfaatkan [], untuk mengikis nilai href di bagian: product_url = ringproduct.a [‘href’]

Namun, jika kita mengikis jalur data ini ke dalam file, mereka tidak dapat dibuka dan diakses pada halaman. Jadi untuk menampilkan URL lengkap, kami dapat membuat variabel Product_link dan memanfaatkan fitur format dengan menggunakan f ‘’ dan menyisipkan Product_Url ke {}.

Product_link = f'https: //ring.com {product_url} ’

Jika kami mencoba mencetak ini, kami dapat memiliki hasil yang membuktikannya berhasil.

Buat loop untuk mengikis semua data yang ditentukan bagian

Baris kode ini berfungsi sehingga kami dapat meluncurkannya untuk mengikis semua data dalam jumlah besar. Untuk ini, kita perlu menggunakan untuk … dalam dan find_all metode:

Untuk RingProduct di Ringoffers.find_all ('Div', Class _ = 'PLP-Product'):

Karena kode ini berada di tingkat orang tua, jadi kita perlu menambahkan usus besar di akhir baris kode dan anak -anak indentasi ini.

Jika kami mencoba mencetak ini, kami dapat melihat hasil yang tercantum di bawah ini, yang mencakup semua informasi bundel produk.

Lulus data yang hilang di beberapa bagian

Anda mungkin menyadari bahwa tidak semua bundel produk memiliki subheadline dan harga promosi, jadi jika Anda mencoba menjalankan subheadline dan lini harga kode kode jika Anda menemukan respons ini dari Python: Object tidak memiliki ‘teks’ atribut, dan itu akan menghentikan Proses Mengikis.

Ini adalah cerminan dari dunia pengkodean karena tidak semua informasi dalam urutan dan terstruktur. Jadi kita perlu menggunakan mencoba/kecuali untuk melewati ini saat bertemu.

Subpos:

mencoba:
Subheadline = RingProduct.Find ('H6', Class _ = 'Sub-Title Size-Xs'). Teks
kecuali pengecualian sebagai E:
Subheadline = tidak ada

Harga promosi:

mencoba:
reguler_price = ringproduct.find ('span', class _ = 'perbandingan-harga'). Teks

kecuali pengecualian sebagai E:
reguler_price = tidak ada

Untuk nilai variabel di bawah kecuali pengecualian sebagai e, Anda dapat mengaturnya karena Anda merasa mudah dimengerti, seperti tidak ada, 0, ‘na’, dll.

Saya tidak mengatur, jadi Anda dapat melihat hasil responsnya

Simpan data ke dalam file CSV

Sekarang skrip Python sudah siap, dan sudah waktunya untuk menyimpan data yang dikikis ke suatu tempat, yang dapat berupa file lokal atau server online.

Saya akan membahas detail tentang file CSV karena saya berbicara tentang pelajaran ini sebelumnya. Jika Anda tertarik, silakan periksa artikel lainnya

Setelah kode selesai, file CSV seperti yang di bawah ini akan muncul dan menyimpan semua data yang ditentukan, kami bertujuan untuk mengikis.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *