Home / Programming / Kikis Situs Web Dengan Tutorial Python Sup Cantik Ini

Kikis Situs Web Dengan Tutorial Python Sup Cantik Ini

Beautiful Soup adalah pustaka Python sumber terbuka. Ini menggunakan parser navigasi untuk mengikis konten file XML dan HTML. Anda membutuhkan data untuk beberapa tujuan analitis. Namun, jika Anda baru mengenal Python dan web scraping, library Beautiful Soup Python layak untuk dicoba untuk proyek web scraping.

Dengan pustaka Beautiful Soup open-source Python, Anda bisa mendapatkan data dengan menyalin bagian atau elemen apa pun dari halaman web dengan kontrol maksimum atas prosesnya. Pada artikel ini, kami melihat bagaimana Anda dapat menggunakan Beautiful Soup untuk mengikis situs web.

Cara Memasang Sup Cantik dan Memulai Dengannya

Sebelum kita melanjutkan, dalam artikel tutorial Beautiful Soup ini, kita akan menggunakan Python 3 dan beautifulsoup4, Beautiful Soup versi terbaru. Pastikan Anda membuat lingkungan virtual Python untuk mengisolasi proyek Anda dan paketnya dari yang ada di mesin lokal Anda.

python-virtual-environment

Untuk memulai, Anda harus menginstal pustaka Beautiful Soup di lingkungan virtual Anda. Beautiful Soup tersedia sebagai paket PyPi untuk semua sistem operasi, jadi Anda dapat menginstalnya dengan ekstensi pip instal beautifulsoup4 perintah melalui terminal.

Namun, jika Anda menggunakan Debian atau Linux, perintah di atas masih berfungsi, tetapi Anda dapat menginstalnya dengan manajer paket dengan menjalankannya apt-get install python3-bs4.

Beautiful Soup tidak mengikis URL secara langsung. Ini hanya berfungsi dengan file HTML atau XML yang sudah jadi. Itu berarti Anda tidak dapat mengirimkan URL langsung ke dalamnya. Untuk mengatasi masalah itu, Anda perlu mendapatkan URL situs web target dengan pustaka permintaan Python sebelum memasukkannya ke Beautiful Soup.

Untuk membuat perpustakaan itu tersedia untuk pengeruk Anda, jalankan permintaan pemasangan pip perintah melalui terminal.

Untuk menggunakan perpustakaan parser XML, jalankan pip instal lxml untuk menginstalnya.

Periksa Halaman Web yang Ingin Anda Kikis

Sebelum menghapus situs web apa pun yang tidak Anda kenal, praktik terbaiknya adalah memeriksa elemen-elemennya. Anda dapat melakukan ini dengan mengalihkan browser Anda ke mode pengembang. Sangat mudah menggunakan Chrome DevTools jika Anda menggunakan Google Chrome.

Namun, penting untuk memeriksa halaman web untuk mengetahui lebih banyak tentang tag HTML, atribut, kelas, dan idnya. Melakukannya akan mengekspos elemen inti dari halaman web dan jenis kontennya.

Ini juga membantu Anda mengembangkan strategi terbaik yang dapat Anda gunakan untuk mendapatkan data persis yang Anda inginkan dari situs web dan bagaimana Anda bisa mendapatkannya.

Cara Mengikis Data Situs Web Dengan Sup Cantik

Sekarang setelah Anda memiliki semuanya dan siap, buka editor kode pilihan dan buat file Python baru, berikan nama yang dipilih. Namun, Anda juga dapat menggunakan IDE berbasis web seperti Jupyter Notebook jika Anda tidak terbiasa menjalankan Python melalui baris perintah.

Selanjutnya, impor pustaka yang diperlukan:

from bs4 import BeautifulSoup
import requests

Pertama, mari kita lihat cara kerja pustaka permintaan:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com')
print(website)

Ketika Anda menjalankan kode di atas, ini mengembalikan status 200, yang menunjukkan bahwa permintaan Anda berhasil. Jika tidak, Anda mendapatkan status 400 atau beberapa status kesalahan lain yang menunjukkan permintaan GET gagal.

Ingatlah untuk selalu mengganti URL situs web dalam tanda kurung dengan URL target Anda.

Setelah Anda mendapatkan situs web dengan Dapatkan permintaan, Anda kemudian meneruskannya ke Beautiful Soup, yang sekarang dapat membaca konten sebagai file HTML atau XML menggunakan XML atau parser HTML bawaan, tergantung pada format yang Anda pilih.

Lihat cuplikan kode berikut ini untuk mengetahui bagaimana melakukan ini dengan parser HTML:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup)

Kode di atas mengembalikan seluruh DOM halaman web dengan isinya.

Anda juga bisa mendapatkan versi DOM yang lebih selaras dengan menggunakan mendandani metode. Anda dapat mencobanya untuk melihat hasilnya:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.prettify())

Anda juga bisa mendapatkan konten murni halaman web tanpa memuat elemennya dengan .teks metode:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.text)

Cara Mengikis Konten Halaman Web dengan Nama Tag

Anda juga dapat mengikis konten di tag tertentu dengan Beautiful Soup. Untuk melakukan ini, Anda perlu memasukkan nama tag target dalam permintaan scraper Soup Cantik Anda.

Misalnya, mari kita lihat bagaimana Anda bisa mendapatkan konten di h2 tag halaman web.

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.h2)

Dalam potongan kode di atas, soup.h2 mengembalikan yang pertama h2 elemen laman web dan mengabaikan sisanya. Untuk memuat semua file h2 elemen, Anda dapat menggunakan Temukan semua fungsi bawaan dan untuk loop Python:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
h2tags = soup.find_all('h2')
for soups in h2tags:
print(soups)

Blok kode itu mengembalikan semuanya h2 elemen dan isinya. Namun, Anda bisa mendapatkan konten tanpa memuat tag dengan menggunakan .tali metode:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
h2tags = soup.find_all('h2')
for soups in h2tags:
print(soups.string)

Anda dapat menggunakan metode ini untuk tag HTML apa pun. Yang perlu Anda lakukan hanyalah mengganti file h2 tandai dengan yang Anda suka.

Namun, Anda juga dapat mengikis lebih banyak tag dengan meneruskan daftar tag ke file Temukan semua metode. Misalnya, blok kode di bawah ini menghapus konten Sebuah, h2, dan judul tag:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
tags = soup.find_all(['a', 'h2', 'title'])
for soups in tags:
print(soups.string)

Cara Mengikis Halaman Web Menggunakan ID dan Nama Kelas

Setelah memeriksa situs web dengan DevTools, ini memungkinkan Anda mengetahui lebih banyak tentang id dan atribut kelas yang memegang setiap elemen di DOM-nya. Setelah Anda memiliki informasi itu, Anda dapat mengikis halaman web itu menggunakan metode ini. Ini berguna saat konten komponen target keluar dari database.

Anda dapat menggunakan Temukan metode untuk pengikis id dan kelas. tidak seperti Temukan semua metode yang mengembalikan objek iterable, yaitu Temukan metode ini bekerja pada satu target yang tidak dapat diulang, yaitu Indo pada kasus ini. Jadi, Anda tidak perlu menggunakan file untuk loop dengan itu.

Mari kita lihat contoh bagaimana Anda dapat mengikis konten halaman di bawah ini menggunakan id:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
id = soup.find(id = 'enter the target id here')
print(id.text)

Untuk melakukan ini untuk nama kelas, ganti Indo dengan kelas. Namun, menulis kelas langsung menghasilkan kebingungan sintaks karena Python melihatnya sebagai kata kunci. Untuk melewati kesalahan itu, Anda perlu menulis garis bawah di depan kelas seperti ini: kelas_.

Intinya, baris yang berisi id menjadi:

my_classes = soup.find(class_ = 'enter the target class name here')
print(my_classes.text)

Namun, Anda juga dapat mengikis halaman web dengan memanggil nama tag tertentu dengan id atau kelasnya yang sesuai:

data = soup.find_all('div', class_ = 'enter the target class name here')
print(data)

Cara Membuat Scraper yang Dapat Digunakan Kembali Dengan Sup Cantik

Anda dapat membuat kelas dan menggabungkan semua kode sebelumnya ke dalam fungsi di kelas tersebut untuk membuat scraper yang dapat digunakan kembali yang mendapatkan konten dari beberapa tag dan id-nya. Kita bisa melakukan ini dengan membuat fungsi yang menerima lima argumen: URL, dua nama tag, dan id atau kelasnya yang sesuai.

Asumsikan Anda ingin mengorek harga kemeja dari situs web e-niaga. Contoh kelas scraper di bawah ini mengekstrak label harga dan kemeja dengan id atau kelasnya yang sesuai dan kemudian mengembalikannya sebagai bingkai data Pandas dengan ‘Price’ dan Shirt_name sebagai nama kolom.

Pastikan Anda pip install panda melalui terminal jika Anda belum melakukannya.

import pandas as pd
class scrapeit:
try:
def scrape(website=None, tag1=None, id1=None, tag2=None, id2=None):
if not (website and tag1 and id1 and tag2 and id2)==None:
try:
page = requests.get(website)
soup = BeautifulSoup(page.content, 'html.parser')
infotag1 = soup.find_all(tag1, id1)
infotag2 = soup.find_all(tag2, id2)
priced = [prices.text for prices in infotag1]
shirt = [shirts.text for shirts in infotag2]
data = {
'Price':priced,
'Shirt_name':shirt}
info = pd.DataFrame(data, columns=['Price', 'Shirt_name'])
print(info)
except:
print('Not successful')
else:
print('Oops! Please enter a website, two tags and thier corresponding ids')
except:
print('Not successful!')

Scraper yang baru saja Anda buat adalah modul yang dapat digunakan kembali dan Anda dapat mengimpor serta menggunakannya di file Python lain. Untuk memanggil mengikis fungsi dari kelasnya, Anda gunakan scrapeit.scrape (‘URL Situs Web’, ‘price_tag’, ‘price_id’, ‘shirt_tag’, ‘shirt_id’). Jika Anda tidak memberikan URL dan parameter lainnya, file lain pernyataan meminta Anda untuk melakukannya.

Untuk menggunakan scaper itu di file Python lain, Anda dapat mengimpornya seperti ini:

from scraper_module import scrapeit
scrapeit.scrape('URL', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id')

catatan: scraper_module adalah nama file Python yang menyimpan kelas pengeruk.

Anda juga dapat memeriksa dokumentasi Beautiful Soup jika Anda ingin mendalami lebih dalam bagaimana Anda dapat memanfaatkannya sebaik-baiknya.

Beautiful Soup adalah pengikis layar Python yang kuat yang memberi Anda kendali atas bagaimana data Anda datang selama scraping. Ini adalah alat bisnis yang berharga, karena dapat memberi Anda akses ke data web pesaing seperti harga, tren pasar, dan banyak lagi.

Meskipun kami telah membuat pengikis tag di artikel ini, Anda masih dapat bermain-main dengan pustaka Python yang kuat ini untuk membuat alat penggosokan yang lebih berguna.

Windows Desktop Jarak Jauh
10 Perangkat Lunak Akses Jarak Jauh Teratas untuk Mengontrol PC Windows Anda Dari Mana Saja

Apa yang Anda lakukan saat Anda perlu bekerja dengan komputer di berbagai lokasi? Gunakan perangkat lunak akses jarak jauh ini untuk menghubungkan ke PC lain dari mana saja.


Tentang Penulis

.

About nomund

Melihat Keluaran KL cepat : Nomor KL Hari Ini Lengkap

Check Also

Apa itu Rubber Duck Debugging?

Ada sangat sedikit hal yang terasa lebih buruk daripada menjalankan program Anda untuk kesekian kalinya …