Mengikis Laman Web Dengan Tutorial Python Sup Cantik Ini

Mengikis Laman Web Dengan Tutorial Python Sup Cantik Ini

Beautiful Soup adalah perpustakaan Python sumber terbuka. Ia menggunakan parser navigasi untuk mengikis kandungan fail XML dan HTML. Anda memerlukan data untuk beberapa tujuan analisis. Namun, jika anda baru menggunakan Python dan mengikis web, perpustakaan Beautiful Soup Python patut dicuba untuk projek mengikis web.





Dengan perpustakaan Beautiful Soup sumber terbuka Python, anda boleh mendapatkan data dengan mengikis mana-mana bahagian atau elemen halaman web dengan kawalan maksimum terhadap proses tersebut. Dalam artikel ini, kami melihat bagaimana anda boleh menggunakan Sup Indah untuk mengikis laman web.





Cara Memasang Sup Cantik dan Memulakannya

Sebelum kita meneruskan, dalam artikel tutorial Beautiful Soup ini, kita akan menggunakan Python 3 dan sup cantik4 , versi terbaru dari Beautiful Soup. Pastikan bahawa anda mewujudkan persekitaran maya Python untuk mengasingkan projek dan pakejnya dari yang terdapat di mesin tempatan anda.





cara mematikan tv epal

Untuk memulakan, anda mesti memasang perpustakaan Sup Indah di persekitaran maya anda. Beautiful Soup tersedia sebagai pakej PyPi untuk semua sistem operasi, jadi anda boleh memasangnya dengan pip pasang cantiksoup4 arahan melalui terminal.

Walau bagaimanapun, jika anda menggunakan Debian atau Linux, perintah di atas masih berfungsi, tetapi anda boleh memasangnya dengan pengurus pakej dengan menjalankan apt-get install python3-bs4 .



Beautiful Soup tidak mengikis URL secara langsung. Ia hanya berfungsi dengan fail HTML atau XML yang sudah siap. Ini bermakna anda tidak boleh meneruskan URL ke dalamnya. Untuk menyelesaikan masalah itu, anda perlu mendapatkan URL laman web sasaran dengan pustaka permintaan Python sebelum memberikannya kepada Beautiful Soup.

Untuk menjadikan perpustakaan itu tersedia untuk pengikis anda, jalankan permintaan pemasangan pip arahan melalui terminal.





Untuk menggunakan pustaka penghurai XML, jalankan pasang lxml untuk memasangnya.

Periksa Laman Web yang Ingin Mengikis

Sebelum mengikis laman web yang tidak anda kenali, amalan terbaik adalah memeriksa elemennya. Anda boleh melakukan ini dengan menukar penyemak imbas anda ke mod pembangun. Ia cukup mudah untuk gunakan Chrome DevTools jika anda menggunakan Google Chrome.





Walau bagaimanapun, perlu memeriksa halaman web untuk mengetahui lebih lanjut mengenai tag HTML, atribut, kelas, dan idnya. Melakukan itu mendedahkan elemen teras laman web dan jenis kandungannya.

Ini juga membantu anda mengembangkan strategi terbaik yang dapat anda gunakan untuk mendapatkan data tepat yang anda inginkan dari laman web dan bagaimana anda boleh mendapatkannya.

Cara Mengikis Data Laman Web Dengan Sup Cantik

Sekarang anda sudah siap dan siap, buka editor kod pilihan dan buat fail Python baru, memberikan nama yang dipilih. Walau bagaimanapun, anda juga boleh memanfaatkan IDE berasaskan web seperti Jupyter Notebook jika anda tidak biasa menjalankan Python melalui baris arahan.

Seterusnya, import perpustakaan yang diperlukan:

from bs4 import BeautifulSoup
import requests

Pertama, mari kita lihat bagaimana perpustakaan permintaan berfungsi:

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

Apabila anda menjalankan kod di atas, ia mengembalikan status 200, yang menunjukkan bahawa permintaan anda berjaya. Jika tidak, anda mendapat status 400 atau beberapa status ralat lain yang menunjukkan permintaan GET yang gagal.

Ingatlah untuk selalu mengganti URL laman web dalam kurungan dengan URL sasaran anda.

Sebaik sahaja anda mendapatkan laman web dengan dapatkan minta, anda kemudian menyebarkannya ke Beautiful Soup, yang kini dapat membaca kandungannya sebagai fail HTML atau XML menggunakan XML atau penghurai HTML bawaannya, bergantung pada format yang anda pilih.

Lihat coretan kod seterusnya untuk melihat cara melakukannya dengan penghurai HTML:

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

Kod di atas mengembalikan keseluruhan DOM laman web dengan kandungannya.

Anda juga boleh mendapatkan versi DOM yang lebih selaras dengan menggunakan kepura-puraan kaedah. Anda boleh mencubanya 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 boleh mendapatkan kandungan murni laman web tanpa memuat elemennya dengan .teks kaedah:

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

Cara Mengikis Kandungan Halaman Web dengan Nama Tag

Anda juga boleh mengikis kandungan dalam tag tertentu dengan Beautiful Soup. Untuk melakukan ini, anda perlu memasukkan nama tag sasaran dalam permintaan pengikis Sup Indah anda.

Sebagai contoh, mari kita lihat bagaimana anda boleh mendapatkan kandungan 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 coretan kod di atas, sup.h2 mengembalikan yang pertama h2 elemen laman web dan mengabaikan yang lain. Untuk memuatkan semua h2 elemen, anda boleh menggunakan cari_semua fungsi terbina dalam dan untuk gelung Python:

cara boot iso dari usb
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)

Sekatan kod itu mengembalikan semua h2 unsur dan kandungannya. Namun, anda boleh mendapatkan kandungan tanpa memuatkan tag dengan menggunakan .tali kaedah:

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 boleh menggunakan kaedah ini untuk sebarang tag HTML. Yang perlu anda buat hanyalah ganti h2 tag dengan yang anda suka.

Namun, anda juga boleh mengikis lebih banyak tag dengan memasukkan senarai tag ke dalam cari_semua kaedah. Contohnya, blok kod di bawah ini mengikis kandungan ke , h2 , dan tajuk teg:

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 dengan menggunakan ID dan Nama Kelas

Setelah memeriksa laman web dengan DevTools, laman web ini membolehkan anda mengetahui lebih banyak mengenai atribut id dan kelas yang menyimpan setiap elemen di DOM-nya. Sebaik sahaja anda mempunyai maklumat itu, anda boleh mengikis laman web itu menggunakan kaedah ini. Ia berguna apabila kandungan komponen sasaran keluar dari pangkalan data.

Anda boleh menggunakan cari kaedah untuk pengikis id dan kelas. Tidak seperti cari_semua kaedah yang mengembalikan objek berulang, cari kaedah berfungsi pada satu sasaran yang tidak boleh berulang, yang merupakan ID dalam kes ini. Jadi, anda tidak perlu menggunakan untuk gelung dengannya.

Mari lihat contoh bagaimana anda dapat mengikis kandungan halaman di bawah 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 ID dengan kelas . Walau bagaimanapun, menulis kelas secara langsung menghasilkan kekeliruan sintaks kerana Python melihatnya sebagai kata kunci. Untuk memintas ralat itu, anda perlu menuliskan garis bawah di hadapan kelas seperti ini: kelas_ .

Pada dasarnya, garis yang mengandungi 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 Pengikis Yang Boleh Digunakan Semula Dengan Sup Cantik

Anda boleh membuat kelas dan menyatukan semua kod sebelumnya ke dalam fungsi di kelas tersebut untuk membuat pengikis yang dapat digunakan semula yang mendapat kandungan beberapa tag dan id mereka. Kita dapat melakukannya dengan membuat fungsi yang menerima lima argumen: URL, dua nama tag, dan id atau kelas yang sesuai.

Andaikan anda ingin mengikis harga baju dari laman web e-dagang. Contoh kelas pengikis di bawah ini mengekstrak tanda harga dan baju dengan id atau kelas yang sesuai dan kemudian mengembalikannya sebagai bingkai data Pandas dengan 'Price' dan Shirt_name sebagai nama lajur.

Pastikan bahawa anda pip pasang panda melalui terminal sekiranya 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!')

Pengikis yang baru anda buat adalah modul yang boleh digunakan semula dan anda boleh mengimport dan menggunakannya dalam fail Python yang lain. Untuk memanggil mengikis berfungsi dari kelasnya, anda gunakan scrapeit.scrape ('URL laman web', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id') . Sekiranya anda tidak memberikan URL dan parameter lain, maka yang lain pernyataan meminta anda berbuat demikian.

Untuk menggunakan scaper itu dalam fail Python yang lain, anda boleh mengimportnya seperti ini:

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

Catatan: pengikis_modul adalah nama fail Python yang memegang kelas pengikis.

Anda juga boleh menyemak Dokumentasi Sup Cantik jika anda ingin menyelami lebih mendalam bagaimana anda dapat memanfaatkannya dengan sebaik-baiknya.

Sup Indah adalah Alat Mengikis Web yang Berharga

Beautiful Soup adalah pengikis skrin Python yang kuat yang memberi anda kawalan mengenai bagaimana data anda melalui semasa mengikis. Ini adalah alat perniagaan yang berharga, kerana dapat memberi anda akses ke data web pesaing seperti harga, trend pasaran dan banyak lagi.

cara menulis laporan profesional

Walaupun kami telah membuat pengikis teg dalam artikel ini, anda masih boleh bermain-main dengan perpustakaan Python yang hebat ini untuk membuat alat mengikis yang lebih berguna.

Berkongsi Berkongsi Tweet E-mel Alat Mengikis Web Terbaik Dalam Talian

Perlu mengumpulkan data dari laman web untuk tujuan analisis? Alat mengikis web ini memudahkan.

Baca Seterusnya
Topik-topik yang berkaitan
  • Pengaturcaraan
  • Python
Mengenai Pengarang Idisou Omisola(94 Artikel Diterbitkan)

Idowu meminati apa sahaja teknologi pintar dan produktiviti. Pada masa lapang, dia bermain-main dengan pengekodan dan beralih ke papan catur ketika dia bosan, tetapi dia juga suka melepaskan diri dari rutin sekali-sekala. Kesungguhannya untuk menunjukkan kepada orang-orang tentang teknologi moden mendorongnya untuk menulis lebih banyak lagi.

Lagi Dari Idowu Omisola

Langgan buletin kami

Sertailah buletin kami untuk mendapatkan petua, ulasan, ebook percuma, dan tawaran eksklusif!

Klik di sini untuk melanggan