Gosok Situs Web Dengan Tutorial Python Sup Yang Indah Ini

Gosok Situs Web Dengan Tutorial Python Sup Yang Indah Ini

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





Dengan pustaka Beautiful Soup sumber terbuka Python, Anda bisa mendapatkan data dengan menggores bagian atau elemen mana 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 Memulainya

Sebelum kita melanjutkan, dalam artikel tutorial Beautiful Soup ini, kita akan menggunakan Python 3 dan sup cantik4 , versi terbaru dari Sup Cantik. Pastikan bahwa Anda buat lingkungan virtual Python untuk mengisolasi proyek Anda dan paket-paketnya dari yang ada di mesin lokal Anda.





bagaimana saya menemukan sejarah rumah saya?

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

Namun, jika Anda menggunakan Debian atau Linux, perintah di atas masih berfungsi, tetapi Anda dapat menginstalnya dengan pengelola paket dengan menjalankan 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 meneruskan 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 scraper Anda, jalankan permintaan pemasangan pip perintah melalui terminal.





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

Periksa Halaman Web yang Ingin Anda Kikis

Sebelum menggores situs web apa pun yang tidak Anda kenal, praktik terbaik adalah memeriksa elemen-elemennya. Anda dapat melakukan ini dengan mengalihkan browser Anda ke mode pengembang. Ini cukup mudah untuk gunakan Chrome DevTools jika Anda menggunakan Google Chrome.





Namun, Anda perlu memeriksa halaman web untuk mengetahui lebih banyak tentang tag, atribut, kelas, dan id HTML-nya. Melakukan hal itu memperlihatkan elemen inti 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, beri nama yang dipilih. Namun, Anda juga bisa memanfaatkan IDE berbasis web seperti Jupyter Notebook jika Anda tidak terbiasa menjalankan Python melalui baris perintah.

Selanjutnya, impor perpustakaan yang diperlukan:

from bs4 import BeautifulSoup
import requests

Pertama, mari kita lihat bagaimana perpustakaan permintaan bekerja:

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

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

Ingatlah untuk selalu mengganti URL situs web dalam 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 pengurai XML atau HTML bawaannya, tergantung pada format yang Anda pilih.

Lihatlah cuplikan kode berikut ini untuk melihat bagaimana melakukannya dengan pengurai 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 kontennya.

Anda juga bisa mendapatkan versi DOM yang lebih selaras dengan menggunakan mendandani metode. Anda dapat mencoba ini 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 dalam tag tertentu dengan Beautiful Soup. Untuk melakukan ini, Anda perlu memasukkan nama tag target dalam permintaan scraper Beautiful Soup 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 cuplikan kode di atas, sup.h2 mengembalikan yang pertama h2 elemen halaman web dan mengabaikan sisanya. Untuk memuat semua h2 elemen, Anda dapat menggunakan Temukan semua fungsi bawaan dan untuk lingkaran Python:

cara meneruskan banyak email di outlook
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 .rangkaian 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 h2 tag dengan yang kamu suka.

Namun, Anda juga dapat mengikis lebih banyak tag dengan meneruskan daftar tag ke dalam Temukan semua metode. Misalnya, blok kode di bawah ini mengikis konten ke , 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 menyimpan setiap elemen di DOM-nya. Setelah Anda memiliki informasi itu, Anda dapat mengikis halaman web itu menggunakan metode ini. Ini berguna ketika konten komponen target keluar dari database.

Anda dapat menggunakan Temukan metode untuk id dan pencakar kelas. tidak seperti Temukan semua metode yang mengembalikan objek yang dapat diubah, the Temukan metode ini bekerja pada satu target yang tidak dapat diubah, yaitu Indo pada kasus ini. Jadi, Anda tidak perlu menggunakan untuk lingkaran 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 kelas 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 itu untuk membuat scraper yang dapat digunakan kembali yang mendapatkan konten dari beberapa tag dan id-nya. Kita dapat melakukan ini dengan membuat fungsi yang menerima lima argumen: URL, dua nama tag, dan id atau kelas yang sesuai.

Asumsikan Anda ingin mengikis harga kaos dari situs web e-commerce. Contoh kelas scraper di bawah ini mengekstrak tag harga dan kemeja dengan id atau kelas yang sesuai dan kemudian mengembalikannya sebagai bingkai data Pandas dengan 'Harga' dan Shirt_name sebagai nama kolom.

Pastikan bahwa 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 dan menggunakannya di file Python lain. Untuk memanggil mengikis fungsi dari kelasnya, Anda menggunakan scrapeit.scrape('URL Situs Web', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id') . Jika Anda tidak memberikan URL dan parameter lainnya, lain pernyataan meminta Anda untuk melakukannya.

Untuk menggunakan scraper 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 memegang kelas scraper.

Anda juga dapat memeriksa Dokumentasi Sup yang indah jika Anda ingin menyelam lebih dalam tentang bagaimana Anda dapat memanfaatkannya sebaik mungkin.

Sup Cantik Adalah Alat Pengikis Web yang Berharga

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

cara me-restart macbook air

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

Membagikan Membagikan Menciak Surel Alat Pengikis Web Terbaik Online

Perlu mengumpulkan data dari situs web untuk tujuan analitis? Alat pengikis web ini membuatnya mudah.

Baca Selanjutnya
Topik-topik yang berkaitan
  • Pemrograman
  • Python
Tentang Penulis Idisou Omisola(94 Artikel Diterbitkan)

Idowu sangat menyukai teknologi dan produktivitas yang cerdas. Di waktu luangnya, dia bermain-main dengan coding dan beralih ke papan catur ketika dia bosan, tetapi dia juga suka melepaskan diri dari rutinitas sesekali. Semangatnya untuk menunjukkan kepada orang-orang tentang teknologi modern memotivasinya untuk menulis lebih banyak.

More From Idowu Omisola

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Klik di sini untuk berlangganan