Mengikis web ialah kemahiran yang tidak ternilai untuk mengumpul data daripada tapak web apabila tiada API langsung tersedia. Sama ada anda mengekstrak harga produk, mengumpul data penyelidikan atau membina set data, pengikisan web menawarkan kemungkinan yang tidak berkesudahan.
Dalam siaran ini, saya akan membimbing anda melalui asas pengikisan web, alatan yang anda perlukan dan amalan terbaik untuk diikuti, menggunakan Python sebagai alat utama kami.
Pengikisan web ialah proses mengekstrak data daripada tapak web. Ini dilakukan dengan membuat permintaan ke tapak web, menghuraikan kod HTML dan mengenal pasti corak atau teg di mana data berada. Pada asasnya, kami bertindak seperti penyemak imbas web, tetapi bukannya memaparkan kandungan, kami menarik dan memproses data.
Python mempunyai ekosistem yang sangat baik untuk mengikis web, dan perpustakaan berikut biasanya digunakan:
Permintaan: Mengendalikan penghantaran permintaan HTTP ke tapak web dan menerima respons.
pip install requests
BeautifulSoup: Pustaka yang membolehkan kami menghuraikan dokumen HTML dan XML, menjadikannya mudah untuk menavigasi struktur data dan mengekstrak maklumat yang berkaitan.
pip install beautifulsoup4
Selenium: Alat yang lebih maju untuk mengikis halaman web dinamik, terutamanya yang bergantung pada JavaScript. Ia mengautomasikan pelayar web untuk memaparkan halaman sebelum mengekstrak data.
pip install selenium
Panda: Walaupun tidak hanya untuk mengikis web, Pandas berguna untuk membersihkan, menganalisis dan menyimpan data yang dikikis dalam format berstruktur seperti CSV, Excel atau pangkalan data.
pip install pandas
Mari mulakan dengan mengikis halaman web statik, yang datanya tersedia secara langsung dalam sumber HTML. Untuk contoh ini, kami akan mengikis jadual harga mata wang kripto.
import requests from bs4 import BeautifulSoup # Step 1: Make an HTTP request to get the webpage content url = 'https://example.com/crypto-prices' response = requests.get(url) # Step 2: Parse the HTML content using BeautifulSoup soup = BeautifulSoup(response.content, 'html.parser') # Step 3: Find and extract data (e.g., prices from a table) table = soup.find('table', {'id': 'crypto-table'}) rows = table.find_all('tr') # Step 4: Iterate through rows and extract text data for row in rows[1:]: cols = row.find_all('td') name = cols[0].text.strip() price = cols[1].text.strip() print(f'{name}: {price}')
Banyak tapak web moden menggunakan JavaScript untuk memuatkan data secara dinamik, bermakna maklumat yang anda cari mungkin tidak tersedia secara langsung dalam sumber halaman. Dalam kes sedemikian, Selenium boleh digunakan untuk memaparkan halaman dan mengekstrak data.
from selenium import webdriver from selenium.webdriver.common.by import By # Step 1: Set up Selenium WebDriver (e.g., ChromeDriver) driver = webdriver.Chrome(executable_path='path_to_chromedriver') # Step 2: Load the webpage driver.get('https://example.com') # Step 3: Interact with the page or wait for dynamic content to load element = driver.find_element(By.ID, 'dynamic-element') # Step 4: Extract data print(element.text) # Step 5: Close the browser driver.quit()
Hormati peraturan tapak web: Sentiasa semak fail robots.txt tapak untuk memahami perkara yang anda dibenarkan untuk mengikis. Contohnya: https://example.com/robots.txt.
Gunakan kelewatan untuk mengelakkan pengehadan kadar: Sesetengah tapak web mungkin menyekat IP anda jika anda membuat terlalu banyak permintaan terlalu cepat. Gunakan time.sleep() antara permintaan untuk mengelak daripada disekat.
Gunakan Pengepala dan Ejen Pengguna: Tapak web sering menyekat permintaan bukan penyemak imbas. Dengan menetapkan pengepala tersuai, terutamanya Ejen Pengguna, anda boleh meniru penyemak imbas sebenar.
headers = {'User-Agent': 'Mozilla/5.0'} response = requests.get(url, headers=headers)
Kendalikan penomboran: Jika data tersebar merentasi berbilang halaman, anda perlu mengulangi halaman untuk mengikis segala-galanya. Anda biasanya boleh mencapai ini dengan mengubah suai parameter pertanyaan URL.
Ralat pengendalian: Sentiasa bersedia untuk mengendalikan ralat, seperti kehilangan data atau permintaan yang gagal. Ini memastikan pengikis anda berjalan lancar walaupun struktur tapak web berubah.
Setelah anda mengikis data, adalah penting untuk menyimpannya untuk analisis lanjut. Anda boleh menggunakan Pandas untuk menukar data kepada DataFrame dan menyimpannya ke CSV:
import pandas as pd data = {'Name': ['Bitcoin', 'Ethereum'], 'Price': [45000, 3000]} df = pd.DataFrame(data) df.to_csv('crypto_prices.csv', index=False)
Sebagai alternatif, anda boleh menyimpan data ke pangkalan data seperti SQLite atau PostgreSQL jika anda merancang untuk bekerja dengan set data yang lebih besar.
Mengikis mesti sentiasa dilakukan secara beretika. Berikut ialah beberapa perkara yang perlu diingat:
Sentiasa hormati syarat perkhidmatan tapak web.
Jangan membebankan pelayan dengan terlalu banyak permintaan.
Jika API tersedia, gunakan itu daripada mengikis tapak.
Atributkan sumber data jika anda bercadang untuk menerbitkan atau berkongsi data yang dikikis.
Mengikis web ialah alat yang berkuasa untuk pengumpulan data, tetapi ia memerlukan pertimbangan yang teliti terhadap faktor etika dan teknikal. Dengan alatan seperti Requests, BeautifulSoup dan Selenium, Python memudahkan untuk bermula. Dengan mengikuti amalan terbaik dan sentiasa mematuhi peraturan tapak web, anda boleh mengumpulkan dan memproses data berharga untuk projek anda dengan cekap.
Selamat mengikis!
Atas ialah kandungan terperinci Panduan Pemula untuk Mengikis Web dengan Python: Amalan dan Alat Terbaik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!