


Cara Membina Pengikis Produk untuk Tatal Tatal Tak Terhingga menggunakan Pengikis Web ZenRows
Dalam bidang pengikisan web, mengakses dan mengekstrak data daripada halaman web yang menggunakan penatalan tidak terhingga boleh menjadi cabaran bagi pembangun. Banyak tapak web menggunakan teknik ini untuk memuatkan lebih banyak kandungan secara dinamik, menjadikannya sukar untuk mengikis semua data yang tersedia sekali gus. Penyelesaian yang baik melibatkan simulasi tindakan pengguna, seperti mengklik butang "Muat Lagi" untuk mendedahkan kandungan tambahan.
Tutorial ini akan menyelidiki mengikis data produk daripada halaman dengan skrol tanpa had, menggunakan pengikis web sumber terbuka Zenrows, anda akan membina bot pengikis yang akan mengakses kandungan daripada halaman web dan anda akan menggunakan Zenrows untuk menjana lebih banyak produk pada halaman dengan mengklik butang "Muat Lagi", untuk mensimulasikan penatalan yang tidak terhingga.
Prasyarat
Untuk mengikuti tutorial ini, anda perlu mempunyai yang berikut:
- Python: Anda sepatutnya menyediakan Python pada mesin anda. Jika tidak, anda boleh memasangnya di sini.
- Asas Mengikis Web: Anda seharusnya mempunyai pemahaman yang kukuh tentang cara pengikisan web berfungsi.
- ZenRows SDK: Anda akan menggunakan perkhidmatan ZenRows untuk memintas langkah anti-mengikis dan memudahkan mengikis kandungan dinamik. Anda boleh mendaftar untuk akaun ZenRows percuma di sini.
Mendapatkan Akses kepada Kandungan
Setelah anda mendaftar untuk akaun Zenrows anda dan anda mempunyai prasyarat, langkah seterusnya ialah mengakses kandungan dari halaman web; untuk tutorial ini, anda akan menggunakan halaman ini https://www.scrapingcourse.com/button-click.
Anda juga akan menggunakan ZenRows SDK untuk mengikis halaman dinamik dan mengendalikan pelbagai rendering dan langkah anti-bot. Mari mulakan anda:
Pasang Pustaka yang diperlukan:
Buka terminal IDE pilihan anda dan jalankan kod untuk memasang ZenRows Python SDK.
pip install zenrows python-dotenv
Menyediakan API anda
Pergi ke papan pemuka anda dan salin Kunci API di penjuru kanan sebelah atas skrin anda seperti dalam imej di bawah.
Seterusnya, buat halaman app.py dan .env, kemudian tambahkan kod di bawah pada fail app.py anda. Dan tambahkan kunci API anda pada API_KEY pembolehubah dalam fail .env anda.
# Import ZenRows SDK from zenrows import ZenRowsClient from dotenv import load_dotenv import os # Load environment variables load_dotenv() # Initialize ZenRows client with your API key client = ZenRowsClient(os.getenv("API_KEY")) # URL of the page you want to scrape url = "https://www.scrapingcourse.com/button-click" # Set up initial parameters for JavaScript rendering and interaction base_params = { "js_render": "true", "json_response": "true", "premium_proxy": "true", "markdown_response": "true" }
Kod di atas memulakan Zenrow SDK menggunakan kunci API anda. Ia menyediakan pembolehubah URL untuk halaman web yang anda akan mengikis dan menetapkan pembolehubah base_params untuk parameter yang diperlukan. Anda boleh melaksanakan pengikis menggunakan arahan:
python app.py
Ini akan memberikan anda perwakilan HTML halaman yang mengandungi hanya produk pada halaman semasa.
.
Anda sentiasa boleh mengambil langkah ini lebih jauh.
Memuatkan Lebih Banyak Produk
Untuk meningkatkan pengikis anda, anda boleh melaksanakan parameter tambahan untuk berinteraksi dengan butang "Muat Lagi" di bahagian bawah halaman web dan memuatkan lebih banyak produk.
Mulakan dengan mengubah suai import anda untuk memasukkan pakej yang diperlukan dan menambah fungsi parse_products yang menapis tindak balas produk:
pip install zenrows python-dotenv
Seterusnya, buat gelung sementara untuk terus mengikis maklumat produk daripada berbilang halaman sehingga had yang ditentukan (max_products). Tetapkan had kepada 50 untuk tutorial ini:
# Import ZenRows SDK from zenrows import ZenRowsClient from dotenv import load_dotenv import os # Load environment variables load_dotenv() # Initialize ZenRows client with your API key client = ZenRowsClient(os.getenv("API_KEY")) # URL of the page you want to scrape url = "https://www.scrapingcourse.com/button-click" # Set up initial parameters for JavaScript rendering and interaction base_params = { "js_render": "true", "json_response": "true", "premium_proxy": "true", "markdown_response": "true" }
Gelung ini akan terus membuang produk dengan mensimulasikan klik butang "Muat Lagi" sehingga had yang ditentukan dicapai.
Menghuraikan Maklumat Produk
Akhir sekali, anda boleh menghuraikan maklumat produk yang anda kikis dalam langkah sebelumnya. Untuk setiap produk, ekstrak nama produk, pautan imej, harga dan URL halaman produk. Anda juga boleh mengira jumlah harga semua produk dan mencetak hasilnya seperti berikut:
python app.py
Menghuraikan Ke dalam fail CSV
Jika anda lebih suka menghuraikan respons anda ke dalam fail csv yang dieksport, dalam beberapa langkah seterusnya, anda akan mengambil maklumat produk yang telah anda kikis dan mempelajari cara mengeksportnya ke fail CSV.
Mengubah suai Skrip untuk Menyimpan Data
Pertama, anda perlu menggunakan modul CSV terbina dalam Python untuk menyimpan data produk. Dalam kes ini, setiap produk mempunyai empat atribut utama: nama, pautan_imej, harga dan url_produk.
Anda boleh menggunakannya sebagai pengepala untuk CSV anda, mengulangi senarai produk yang dikikis dan kemudian menulis setiap produk sebagai baris dalam fail CSV.
import re import json import time def parse_products(response_json): try: data = json.loads(response_json) md_content = data.get('md', '') pattern = r'\[!\[([^\]]+)\]\(([^\)]+)\)\*\n([^\\n]+)\*\n\*\n$(\d+)\]\(([^\)]+)\)' matches = re.findall(pattern, md_content) products = [] for match in matches: product = { 'name': match[0], 'image_link': match[1], 'price': int(match[3]), 'product_url': match[4] } products.append(product) return products except json.JSONDecodeError: print("Error: Unable to parse JSON response") print("Response content:", response_json[:500]) return [] except Exception as e: print(f"Error parsing products: {str(e)}") return [] # Zenrow SDK code here
Sekarang, selepas mengikis data, cuma panggil fungsi save_to_csv(all_products) untuk menyimpan data dalam fail CSV bernama products.csv.
Jalankan arahan untuk menyimpan data secara automatik ke fail CSV setelah proses mengikis selesai.
# Zenrow SDK code goes here max_products = 50 all_products = [] page = 1 while len(all_products) < max_products: print(f"Scraping page {page}...") # Update parameters for each request params = base_params.copy() js_instructions = [{"click": "#load-more-btn"} for _ in range(page)] js_instructions.append({"wait": 5000}) params["js_instructions"] = json.dumps(js_instructions) try: # Send the GET request to ZenRows response = client.get(url, params=params) # Parse the response JSON new_products = parse_products(response.text) if not new_products: print("No more products found. Stopping.") break all_products.extend(new_products) print(f"Found {len(new_products)} products on this page.") print(f"Total products so far: {len(all_products)}") page += 1 # Add a delay to avoid overwhelming the server time.sleep(2) except Exception as e: print(f"Error occurred: {str(e)}") break
Mengenalpasti 5 Produk Harga Tertinggi
Sekarang anda mempunyai semua produk dalam format berstruktur, anda boleh melangkah lebih jauh dan mengenal pasti 5 produk berharga tertinggi, dan anda perlu melawati setiap halaman produk untuk mengeluarkan butiran tambahan seperti penerangan produk dan SKU kod.
Isih Produk mengikut Harga: Menggunakan fungsi sorted() Python, anda boleh mengisih senarai produk mengikut harga dalam tertib menurun dan mendapatkan semula 5 produk teratas.
Anda perlu melawati setiap halaman menggunakan fungsi requests.get() untuk mengambil data produk bagi setiap halaman tersebut. Daripada respons, anda boleh mengekstrak penerangan produk dan kod SKU.
Anda juga boleh mengemas kini csv fly dari langkah terakhir untuk memasukkan butiran tambahan.
Berikut ialah kod untuk mencapainya:
# Updated Params and while loop code goes here # Calculate the total price of all products total_sum = sum(product['price'] for product in all_products) print("\nAll products:") for product in all_products: print(product) # Print the total sum of the product prices print(f"\nTotal number of products: {len(all_products)}") print(f"Total sum of product prices: ${total_sum}")
Kini, selepas mengikis, anda kini boleh mengenal pasti produk dengan harga tertinggi:
pip install zenrows python-dotenv
Selepas mendapatkan maklumat tambahan, anda boleh mengubah suai fail CSV atau membuat fail baharu dengan butiran ini disertakan.
Kod Lengkap
Beginilah rupa fail app.py lengkap anda.
# Import ZenRows SDK from zenrows import ZenRowsClient from dotenv import load_dotenv import os # Load environment variables load_dotenv() # Initialize ZenRows client with your API key client = ZenRowsClient(os.getenv("API_KEY")) # URL of the page you want to scrape url = "https://www.scrapingcourse.com/button-click" # Set up initial parameters for JavaScript rendering and interaction base_params = { "js_render": "true", "json_response": "true", "premium_proxy": "true", "markdown_response": "true" }
Beginilah rupa tindak balas yang berjaya.
python app.py
Lihat pangkalan kod lengkap di GitHub.
Kesimpulan
Dalam tutorial ini, anda mempelajari cara mengikis produk daripada halaman web dengan tatal tanpa had menggunakan butang "Muat Lagi". Dengan mengikut langkah yang digariskan, anda boleh mengekstrak maklumat produk yang berharga dan meningkatkan teknik mengikis anda menggunakan ZenRows.
Untuk mengetahui lebih lanjut tentang cara anda boleh menggunakan alat mengikis web Zenrow, lihat artikel berikut di blog kami.
- Cara menghuraikan HTML dengan PHP
- Cara menggunakan Hrequests untuk Mengikis Web
- Cara menggunakan pengarang drama dalam Ruby Berikut ialah video ringkas tentang pendekatan tanpa kod untuk menggunakan alat mengikis Web Zenrows.
Atas ialah kandungan terperinci Cara Membina Pengikis Produk untuk Tatal Tatal Tak Terhingga menggunakan Pengikis Web ZenRows. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Cara Menggunakan Python untuk Mencari Pengagihan Zipf Fail Teks

Bagaimana saya menggunakan sup yang indah untuk menghuraikan html?

Cara Bekerja Dengan Dokumen PDF Menggunakan Python

Cara Cache Menggunakan Redis dalam Aplikasi Django

Memperkenalkan Toolkit Bahasa Alam (NLTK)

Bagaimana untuk melakukan pembelajaran mendalam dengan Tensorflow atau Pytorch?
