Pengikisan situs web dengan python menggunakan beautifulsoup dan scrapy

Pengikisan web adalah teknik untuk mengambil data dari situs web. Saat berselancar di web, banyak situs web yang tidak mengizinkan pengguna menyimpan data untuk penggunaan pribadi. Salah satu caranya adalah dengan menyalin-tempel data secara manual, yang membosankan dan memakan waktu. Pengikisan Web adalah otomatisasi proses ekstraksi data dari situs web. Acara ini dilakukan dengan bantuan perangkat lunak pengikis web yang dikenal sebagai pengikis web. Mereka secara otomatis memuat dan mengekstrak data dari situs web berdasarkan kebutuhan pengguna. Ini dapat dibuat khusus agar berfungsi untuk satu situs atau dapat dikonfigurasi untuk bekerja dengan situs web apa pun.  

Di Python, perpustakaan BeautifulSoup dan Scrapy Crawler sebagian besar digunakan untuk pengikisan web. Pada artikel ini, kita akan membahas perbedaan antara kedua library ini

Sup Cantik

BeautifulSoup adalah pustaka Python paling populer yang membantu mem-parsing dokumen HTML atau XML ke dalam struktur pohon untuk menemukan dan mengekstrak data dari halaman web. Itu mengekstrak semua hal buruk dalam bentuk pohon dan kemudian membantu kita menggunakan data dalam bentuk kamus. Alat ini menampilkan antarmuka pythonic yang sederhana dan konversi penyandian otomatis untuk memudahkan bekerja dengan data situs web. Sangat mudah dipelajari dan dikuasai dan memiliki dokumentasi komprehensif yang baik yang membantu untuk mempelajari berbagai hal dengan mudah

Instalasi

Modul ini tidak disertakan dengan Python. Untuk menginstalnya ketik perintah di bawah ini di terminal

pip install BeautifulSoup4

Mengekstrak dari URL

Python3




from bs4import BeautifulSoup

 

soup= BeautifulSoup(html,'html.parser'

pip install scrapy
0

Keuntungan

  • Mudah bagi pemula untuk belajar dan menguasai web scraping
  • Ini memiliki dukungan komunitas yang baik untuk mencari tahu masalahnya
  • Ini memiliki dokumentasi komprehensif yang baik

Kekurangan

  • Ini memiliki ketergantungan python eksternal

Perayap Scrapy

Scrapy adalah salah satu perpustakaan paling kuat. Ini adalah kerangka kerja kolaboratif sumber terbuka untuk mengekstraksi data dari situs web yang kami butuhkan. Performanya cepat. Scrapy menyediakan dukungan bawaan untuk mengekstraksi data dari sumber HTML atau XML menggunakan ekspresi CSS dan ekspresi XPath

Scrapy sebenarnya adalah kerangka web scraper yang lengkap. Anda dapat memberikan Scrapy URL root untuk mulai menggores, lalu Anda dapat menentukan berapa banyak URL yang ingin Anda jelajahi dan ambil, dll.

Instalasi

pip install scrapy
_

Keuntungan

  • Ini mudah diperluas
  • Ini memiliki dukungan bawaan untuk mengekstraksi data
  • Ini memiliki kecepatan yang sangat cepat dibandingkan dengan perpustakaan lain
  • Ini adalah memori dan CPU yang efisien
  • Anda juga dapat membangun aplikasi yang kuat dan ekstensif
  • Memiliki dukungan komunitas yang kuat

Kekurangan

  • Ini memiliki dokumentasi ringan untuk pemula

Tabel Perbedaan antara perayap BeautifulSoup dan Scrapy

Dasar

Sup Cantik

Perayap scrapy

Struktur

Ini adalah perpustakaan. Ini adalah kerangka kerja yang lengkap

Pertunjukan

Sangat lambat untuk melakukan tugas tertentu. Itu dapat melakukan banyak hal dengan cepat karena fitur bawaannya

Kemungkinan diperpanjang

Ini yang terbaik untuk proyek kecil. Pilihan yang lebih baik untuk proyek besar dengan kompleksitas

Ramah pemula

Ini adalah pilihan terbaik bagi pemula untuk memulai. Scrapy relatif lebih kompleks daripada BeautifulSoup

Masyarakat

Komunitas pengembangnya relatif lemah. Komunitas pengembang Scrapy lebih kuat dan luas

Pertimbangan

Itu dianggap sebagai pengurai. Itu dianggap sebagai laba-laba

Jika Anda berurusan dengan operasi scraping kompleks yang membutuhkan kecepatan dan kompleksitas yang tinggi, maka Anda harus memilih Scrapy dan jika Anda baru dalam pemrograman dan ingin bekerja dengan proyek web scraping maka Beautiful Soup bagus karena Anda dapat mempelajarinya dengan mudah dan mampu

Artikel ini membahas langkah-langkah yang terlibat dalam web scraping menggunakan implementasi framework Web Scraping Python yang disebut Beautiful Soup. Langkah-langkah yang terlibat dalam pengikisan web

  1. Kirim permintaan HTTP ke URL halaman web yang ingin Anda akses. Server menanggapi permintaan dengan mengembalikan konten HTML halaman web. Untuk tugas ini, kami akan menggunakan pustaka HTTP pihak ketiga untuk permintaan python
  2. Setelah kami mengakses konten HTML, kami memiliki tugas untuk mem-parsing data. Karena sebagian besar data HTML bersarang, kami tidak dapat mengekstrak data hanya melalui pemrosesan string. Seseorang membutuhkan parser yang dapat membuat struktur bersarang/pohon dari data HTML. Ada banyak pustaka parser HTML yang tersedia tetapi yang paling canggih adalah html5lib
  3. Sekarang, yang perlu kita lakukan hanyalah menavigasi dan mencari pohon parse yang kita buat, mis. e. lintas pohon. Untuk tugas ini, kita akan menggunakan pustaka python pihak ketiga lainnya, Beautiful Soup. Ini adalah pustaka Python untuk menarik data dari file HTML dan XML

Langkah 1. Menginstal pustaka pihak ketiga yang diperlukan

  • Cara termudah untuk menginstal pustaka eksternal dengan python adalah dengan menggunakan pip. pip adalah sistem manajemen paket yang digunakan untuk menginstal dan mengelola paket perangkat lunak yang ditulis dengan Python. Yang perlu Anda lakukan adalah
pip install requests
pip install html5lib
pip install bs4
  • Cara lain adalah mengunduhnya secara manual dari tautan ini
    • permintaan
    • html5lib
    • sup cantik4

Langkah 2. Mengakses konten HTML dari halaman web

Piton




import requests

URL

soup = BeautifulSoup(r.content, 'html5lib')
0
soup = BeautifulSoup(r.content, 'html5lib')
1

________4

pip install scrapy
_4_______0
soup = BeautifulSoup(r.content, 'html5lib')
4

soup = BeautifulSoup(r.content, 'html5lib')
_5
soup = BeautifulSoup(r.content, 'html5lib')
6

Mari kita coba memahami potongan kode ini

  • Pertama-tama impor pustaka permintaan
  • Kemudian, tentukan URL halaman web yang ingin Anda gesek
  • Kirim permintaan HTTP ke URL yang ditentukan dan simpan respons dari server dalam objek respons yang disebut r
  • Sekarang, sebagai print r. konten untuk mendapatkan konten HTML mentah dari halaman web. Ini adalah tipe 'string'

Catatan. Terkadang Anda mungkin mendapatkan kesalahan "Tidak diterima" jadi coba tambahkan agen pengguna browser seperti di bawah ini. Temukan agen pengguna Anda berdasarkan perangkat dan browser dari sini https. //deviceatlas. com/blog/daftar-pengguna-agen-string

Python3




soup = BeautifulSoup(r.content, 'html5lib')
7
soup = BeautifulSoup(r.content, 'html5lib')
0
soup = BeautifulSoup(r.content, 'html5lib')
9
table = soup.find('div', attrs = {'id':'all_quotes'}) 
0
table = soup.find('div', attrs = {'id':'all_quotes'}) 
1
table = soup.find('div', attrs = {'id':'all_quotes'}) 
2
table = soup.find('div', attrs = {'id':'all_quotes'}) 
3

table = soup.find('div', attrs = {'id':'all_quotes'}) 
_4

soup = BeautifulSoup(r.content, 'html5lib')
2
soup = BeautifulSoup(r.content, 'html5lib')
0
table = soup.find('div', attrs = {'id':'all_quotes'}) 
7
soup = BeautifulSoup(r.content, 'html5lib')
0
table = soup.find('div', attrs = {'id':'all_quotes'}) 
9
soup = BeautifulSoup(r.content, 'html5lib')
0
for row in table.find_all_next('div', attrs = {'class': 'col-6 col-lg-3 text-center margin-30px-bottom sm-margin-30px-top'}):
    quote = {}
    quote['theme'] = row.h5.text
    quote['url'] = row.a['href']
    quote['img'] = row.img['src']
    quote['lines'] = row.img['alt'].split(" #")[0]
    quote['author'] = row.img['alt'].split(" #")[1]
    quotes.append(quote)
1

soup = BeautifulSoup(r.content, 'html5lib')
_5
soup = BeautifulSoup(r.content, 'html5lib')
6

Langkah 3. Mem-parsing konten HTML

Piton




for row in table.find_all_next('div', attrs = {'class': 'col-6 col-lg-3 text-center margin-30px-bottom sm-margin-30px-top'}):
    quote = {}
    quote['theme'] = row.h5.text
    quote['url'] = row.a['href']
    quote['img'] = row.img['src']
    quote['lines'] = row.img['alt'].split(" #")[0]
    quote['author'] = row.img['alt'].split(" #")[1]
    quotes.append(quote)
_4

import requests

for row in table.find_all_next('div', attrs = {'class': 'col-6 col-lg-3 text-center margin-30px-bottom sm-margin-30px-top'}):
    quote = {}
    quote['theme'] = row.h5.text
    quote['url'] = row.a['href']
    quote['img'] = row.img['src']
    quote['lines'] = row.img['alt'].split(" #")[0]
    quote['author'] = row.img['alt'].split(" #")[1]
    quotes.append(quote)
7
for row in table.find_all_next('div', attrs = {'class': 'col-6 col-lg-3 text-center margin-30px-bottom sm-margin-30px-top'}):
    quote = {}
    quote['theme'] = row.h5.text
    quote['url'] = row.a['href']
    quote['img'] = row.img['src']
    quote['lines'] = row.img['alt'].split(" #")[0]
    quote['author'] = row.img['alt'].split(" #")[1]
    quotes.append(quote)
8import
quote['theme'] = row.h5.text
0

quote['theme'] = row.h5.text
1

URL

soup = BeautifulSoup(r.content, 'html5lib')
0
quote['theme'] = row.h5.text
4

________4

pip install scrapy
_4_______0
soup = BeautifulSoup(r.content, 'html5lib')
4

quote['theme'] = row.h5.text
1

quote['theme'] = row.h5.text
9
soup = BeautifulSoup(r.content, 'html5lib')
0
quote['url'] = row.a['href']
1
quote['url'] = row.a['href']
2
quote['url'] = row.a['href']
3
quote['url'] = row.a['href']
4

soup = BeautifulSoup(r.content, 'html5lib')
_5
quote['url'] = row.a['href']
6

Hal yang sangat menyenangkan tentang pustaka BeautifulSoup adalah ia dibangun di atas pustaka parsing HTML seperti html5lib, lxml, html. pengurai, dll. Jadi  objek BeautifulSoup dan menentukan pustaka parser dapat dibuat pada saat yang bersamaan. Pada contoh di atas,

soup = BeautifulSoup(r.content, 'html5lib')
_

Kami membuat objek BeautifulSoup dengan memberikan dua argumen

  • r. isi. Ini adalah konten HTML mentah
  • html5lib. Menentukan parser HTML yang ingin kita gunakan

Sekarang sup. prettify() dicetak, memberikan representasi visual dari struktur parse yang dibuat dari konten HTML mentah. Langkah 4. Mencari dan menavigasi melalui pohon parse Sekarang, kami ingin mengekstrak beberapa data berguna dari konten HTML. Objek sup berisi semua data dalam struktur bersarang yang dapat diekstraksi secara terprogram. Dalam contoh kami, kami menggores halaman web yang terdiri dari beberapa kutipan. Jadi, kami ingin membuat program untuk menyimpan kutipan tersebut (dan semua informasi yang relevan tentangnya).  

Piton




quote['url'] = row.a['href']
_7

quote['url'] = row.a['href']
_8

import requests

for row in table.find_all_next('div', attrs = {'class': 'col-6 col-lg-3 text-center margin-30px-bottom sm-margin-30px-top'}):
    quote = {}
    quote['theme'] = row.h5.text
    quote['url'] = row.a['href']
    quote['img'] = row.img['src']
    quote['lines'] = row.img['alt'].split(" #")[0]
    quote['author'] = row.img['alt'].split(" #")[1]
    quotes.append(quote)
7
for row in table.find_all_next('div', attrs = {'class': 'col-6 col-lg-3 text-center margin-30px-bottom sm-margin-30px-top'}):
    quote = {}
    quote['theme'] = row.h5.text
    quote['url'] = row.a['href']
    quote['img'] = row.img['src']
    quote['lines'] = row.img['alt'].split(" #")[0]
    quote['author'] = row.img['alt'].split(" #")[1]
    quotes.append(quote)
8import
quote['theme'] = row.h5.text
0

import

filename = 'inspirational_quotes.csv'
with open(filename, 'w', newline='') as f:
    w = csv.DictWriter(f,['theme','url','img','lines','author'])
    w.writeheader()
    for quote in quotes:
        w.writerow(quote)
6

filename = 'inspirational_quotes.csv'
with open(filename, 'w', newline='') as f:
    w = csv.DictWriter(f,['theme','url','img','lines','author'])
    w.writeheader()
    for quote in quotes:
        w.writerow(quote)
_7

URL

soup = BeautifulSoup(r.content, 'html5lib')
0
quote['theme'] = row.h5.text
4

________4

pip install scrapy
_4_______0
soup = BeautifulSoup(r.content, 'html5lib')
4

filename = 'inspirational_quotes.csv'
with open(filename, 'w', newline='') as f:
    w = csv.DictWriter(f,['theme','url','img','lines','author'])
    w.writeheader()
    for quote in quotes:
        w.writerow(quote)
_7

quote['theme'] = row.h5.text
9
soup = BeautifulSoup(r.content, 'html5lib')
0
quote['url'] = row.a['href']
1
quote['url'] = row.a['href']
2
quote['url'] = row.a['href']
3

filename = 'inspirational_quotes.csv'
with open(filename, 'w', newline='') as f:
    w = csv.DictWriter(f,['theme','url','img','lines','author'])
    w.writeheader()
    for quote in quotes:
        w.writerow(quote)
_7

requests1

soup = BeautifulSoup(r.content, 'html5lib')
0requests3requests4

filename = 'inspirational_quotes.csv'
with open(filename, 'w', newline='') as f:
    w = csv.DictWriter(f,['theme','url','img','lines','author'])
    w.writeheader()
    for quote in quotes:
        w.writerow(quote)
_7

requests6

soup = BeautifulSoup(r.content, 'html5lib')
0 requests8requests9URL0
soup = BeautifulSoup(r.content, 'html5lib')
0
soup = BeautifulSoup(r.content, 'html5lib')
9URL3
table = soup.find('div', attrs = {'id':'all_quotes'}) 
1URL5URL6

filename = 'inspirational_quotes.csv'
with open(filename, 'w', newline='') as f:
    w = csv.DictWriter(f,['theme','url','img','lines','author'])
    w.writeheader()
    for quote in quotes:
        w.writerow(quote)
_7

URL8 URL9

soup = BeautifulSoup(r.content, 'html5lib')
00
soup = BeautifulSoup(r.content, 'html5lib')
01requests9
soup = BeautifulSoup(r.content, 'html5lib')
03

soup = BeautifulSoup(r.content, 'html5lib')
04
soup = BeautifulSoup(r.content, 'html5lib')
05
soup = BeautifulSoup(r.content, 'html5lib')
0
soup = BeautifulSoup(r.content, 'html5lib')
9
soup = BeautifulSoup(r.content, 'html5lib')
08
table = soup.find('div', attrs = {'id':'all_quotes'}) 
1
soup = BeautifulSoup(r.content, 'html5lib')
10
soup = BeautifulSoup(r.content, 'html5lib')
11

soup = BeautifulSoup(r.content, 'html5lib')
_12
soup = BeautifulSoup(r.content, 'html5lib')
13
soup = BeautifulSoup(r.content, 'html5lib')
0
soup = BeautifulSoup(r.content, 'html5lib')
15

soup = BeautifulSoup(r.content, 'html5lib')
12
soup = BeautifulSoup(r.content, 'html5lib')
17
soup = BeautifulSoup(r.content, 'html5lib')
18
soup = BeautifulSoup(r.content, 'html5lib')
19
soup = BeautifulSoup(r.content, 'html5lib')
0
soup = BeautifulSoup(r.content, 'html5lib')
21

soup = BeautifulSoup(r.content, 'html5lib')
12
soup = BeautifulSoup(r.content, 'html5lib')
17
soup = BeautifulSoup(r.content, 'html5lib')
24
soup = BeautifulSoup(r.content, 'html5lib')
19
soup = BeautifulSoup(r.content, 'html5lib')
0
soup = BeautifulSoup(r.content, 'html5lib')
27
soup = BeautifulSoup(r.content, 'html5lib')
28
soup = BeautifulSoup(r.content, 'html5lib')
19

soup = BeautifulSoup(r.content, 'html5lib')
12
soup = BeautifulSoup(r.content, 'html5lib')
17
soup = BeautifulSoup(r.content, 'html5lib')
32
soup = BeautifulSoup(r.content, 'html5lib')
19
soup = BeautifulSoup(r.content, 'html5lib')
0
soup = BeautifulSoup(r.content, 'html5lib')
35
soup = BeautifulSoup(r.content, 'html5lib')
36
soup = BeautifulSoup(r.content, 'html5lib')
19

soup = BeautifulSoup(r.content, 'html5lib')
12
soup = BeautifulSoup(r.content, 'html5lib')
17
soup = BeautifulSoup(r.content, 'html5lib')
40
soup = BeautifulSoup(r.content, 'html5lib')
19
soup = BeautifulSoup(r.content, 'html5lib')
0
soup = BeautifulSoup(r.content, 'html5lib')
35
soup = BeautifulSoup(r.content, 'html5lib')
44
soup = BeautifulSoup(r.content, 'html5lib')
45
soup = BeautifulSoup(r.content, 'html5lib')
46
soup = BeautifulSoup(r.content, 'html5lib')
47
soup = BeautifulSoup(r.content, 'html5lib')
48________4

soup = BeautifulSoup(r.content, 'html5lib')
12
soup = BeautifulSoup(r.content, 'html5lib')
17
soup = BeautifulSoup(r.content, 'html5lib')
52
soup = BeautifulSoup(r.content, 'html5lib')
19
soup = BeautifulSoup(r.content, 'html5lib')
0
soup = BeautifulSoup(r.content, 'html5lib')
35
soup = BeautifulSoup(r.content, 'html5lib')
44
soup = BeautifulSoup(r.content, 'html5lib')
45
soup = BeautifulSoup(r.content, 'html5lib')
46
soup = BeautifulSoup(r.content, 'html5lib')
47
soup = BeautifulSoup(r.content, 'html5lib')
60________4

soup = BeautifulSoup(r.content, 'html5lib')
_12
soup = BeautifulSoup(r.content, 'html5lib')
63

filename = 'inspirational_quotes.csv'
with open(filename, 'w', newline='') as f:
    w = csv.DictWriter(f,['theme','url','img','lines','author'])
    w.writeheader()
    for quote in quotes:
        w.writerow(quote)
_7

soup = BeautifulSoup(r.content, 'html5lib')
_65
soup = BeautifulSoup(r.content, 'html5lib')
0
soup = BeautifulSoup(r.content, 'html5lib')
67

soup = BeautifulSoup(r.content, 'html5lib')
68
soup = BeautifulSoup(r.content, 'html5lib')
69
soup = BeautifulSoup(r.content, 'html5lib')
70
soup = BeautifulSoup(r.content, 'html5lib')
71
soup = BeautifulSoup(r.content, 'html5lib')
72
soup = BeautifulSoup(r.content, 'html5lib')
0
soup = BeautifulSoup(r.content, 'html5lib')
74

soup = BeautifulSoup(r.content, 'html5lib')
12
soup = BeautifulSoup(r.content, 'html5lib')
76
soup = BeautifulSoup(r.content, 'html5lib')
0
soup = BeautifulSoup(r.content, 'html5lib')
78
soup = BeautifulSoup(r.content, 'html5lib')
18
soup = BeautifulSoup(r.content, 'html5lib')
03
soup = BeautifulSoup(r.content, 'html5lib')
24
soup = BeautifulSoup(r.content, 'html5lib')
03______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________G

soup = BeautifulSoup(r.content, 'html5lib')
_12
soup = BeautifulSoup(r.content, 'html5lib')
90

soup = BeautifulSoup(r.content, 'html5lib')
12URL8
soup = BeautifulSoup(r.content, 'html5lib')
13
soup = BeautifulSoup(r.content, 'html5lib')
00 ________4______95

soup = BeautifulSoup(r.content, 'html5lib')
_96
soup = BeautifulSoup(r.content, 'html5lib')
97

Sebelum melanjutkan, kami menyarankan Anda untuk membaca konten HTML halaman web yang kami cetak menggunakan soup. prettify() dan coba temukan pola atau cara untuk menavigasi ke tanda kutip

  • Terlihat bahwa semua kutipan ada di dalam wadah div yang id-nya adalah 'all_quotes'. Jadi, kami menemukan elemen div (disebut sebagai tabel dalam kode di atas) menggunakan metode find()
table = soup.find('div', attrs = {'id':'all_quotes'}) 
  • Argumen pertama adalah tag HTML yang ingin Anda cari dan argumen kedua adalah elemen tipe kamus untuk menentukan atribut tambahan yang terkait dengan tag tersebut. metode find() mengembalikan elemen pencocokan pertama. Anda dapat mencoba mencetak tabel. prettify() untuk mengetahui apa yang dilakukan potongan kode ini
  • Sekarang, di elemen tabel, kita dapat melihat bahwa setiap kutipan ada di dalam wadah div yang kelasnya adalah kutipan. Jadi, kami mengulangi setiap wadah div yang kelasnya adalah kutipan. Di sini, kami menggunakan metode findAll() yang mirip dengan metode find dalam hal argumen tetapi mengembalikan daftar semua elemen yang cocok. Setiap kutipan sekarang diulang menggunakan variabel yang disebut baris. Berikut adalah satu contoh konten baris HTML untuk pemahaman yang lebih baik.
    Pengikisan situs web dengan python menggunakan beautifulsoup dan scrapy
    Sekarang pertimbangkan potongan kode ini.
for row in table.find_all_next('div', attrs = {'class': 'col-6 col-lg-3 text-center margin-30px-bottom sm-margin-30px-top'}):
    quote = {}
    quote['theme'] = row.h5.text
    quote['url'] = row.a['href']
    quote['img'] = row.img['src']
    quote['lines'] = row.img['alt'].split(" #")[0]
    quote['author'] = row.img['alt'].split(" #")[1]
    quotes.append(quote)
  • Kami membuat kamus untuk menyimpan semua informasi tentang kutipan. Struktur bersarang dapat diakses menggunakan notasi titik. Untuk mengakses teks di dalam elemen HTML, kami menggunakan. teks.  
quote['theme'] = row.h5.text
  • Kami dapat menambah, menghapus, mengubah, dan mengakses atribut tag. Ini dilakukan dengan memperlakukan tag sebagai kamus
quote['url'] = row.a['href']
  • Terakhir, semua tanda kutip ditambahkan ke daftar yang disebut tanda kutip
  • Terakhir, kami ingin menyimpan semua data kami di beberapa file CSV
filename = 'inspirational_quotes.csv'
with open(filename, 'w', newline='') as f:
    w = csv.DictWriter(f,['theme','url','img','lines','author'])
    w.writeheader()
    for quote in quotes:
        w.writerow(quote)
  • Di sini kami membuat file CSV bernama inspirational_quotes. csv dan simpan semua kutipan di dalamnya untuk digunakan lebih lanjut

Jadi, ini adalah contoh sederhana cara membuat pengikis web dengan Python. Dari sini, Anda dapat mencoba menghapus situs web lain pilihan Anda. Jika ada pertanyaan, posting di bawah ini di bagian komentar

Catatan. Scraping Web dianggap ilegal dalam banyak kasus. Ini juga dapat menyebabkan IP Anda diblokir secara permanen oleh situs web. Blog ini disumbangkan oleh Nikhil Kumar. Jika Anda menyukai GeeksforGeeks dan ingin berkontribusi, Anda juga dapat menulis artikel menggunakan tulis. geeksforgeeks. org atau kirimkan artikel Anda ke review-team@geeksforgeeks. org. Lihat artikel Anda muncul di halaman utama GeeksforGeeks dan bantu Geeks lainnya. Silakan tulis komentar jika Anda menemukan sesuatu yang salah, atau Anda ingin berbagi informasi lebih lanjut tentang topik yang dibahas di atas

Bagaimana cara mengikis situs web dengan Python dan BeautifulSoup?

Agar pengikisan web berfungsi dengan Python, kita akan melakukan tiga langkah dasar. .
Ekstrak konten HTML menggunakan pustaka permintaan
Menganalisis struktur HTML dan mengidentifikasi tag yang memiliki konten kami
Ekstrak tag menggunakan Beautiful Soup dan masukkan data ke dalam daftar Python

Bisakah saya menggunakan Scrapy dengan BeautifulSoup?

Mana yang lebih baik BeautifulSoup atau Scrapy?

Scrapy adalah alat pengikis web yang lebih tangguh, lengkap fitur, lebih dapat diperluas, dan lebih terpelihara . Scrapy memungkinkan Anda merayapi, mengekstrak, dan menyimpan situs web lengkap. BeautilfulSoup di sisi lain hanya memungkinkan Anda mengurai HTML dan mengekstrak informasi yang Anda cari.

Apakah BeautifulSoup lebih cepat dari Scrapy?

Scrapy sangat cepat. Kemampuannya untuk mengirim permintaan asinkron membuatnya lebih cepat daripada BeautifulSoup . Ini berarti Anda dapat mengikis dan mengekstrak data dari banyak halaman sekaligus. BeautifulSoup tidak memiliki sarana untuk merayapi dan mengikis halaman dengan sendirinya.