Di salah satu artikel saya sebelumnya, saya memperkenalkan taktik web scraping menggunakan Requests dan BeautifulSoup/website API. Pada artikel ini, saya ingin memperkenalkan kerangka kerja aplikasi yang lebih canggih untuk merayapi konten situs web dan mengekstraksi data terstruktur yang disebut Scrapy Show
Dibandingkan dengan metode mengikis lainnya seperti sup cantik, Scrapy memiliki keunggulan sebagai berikut
Kekurangan
Bagian mana dari situs web yang dapat dirayapi? Kami tidak diizinkan merayapi semua situs web dengan bebas. Ini karena terlalu banyak lalu lintas ke situs web dapat menyebabkan kerusakan server dan perusahaan mungkin ingin melindungi datanya sendiri. Bagaimana kami tahu apakah kami dapat mengikis situs web ini? . txt setelah direktori utama untuk melihat informasi ini robot. File txt untuk sgcarmart. com — https. // www. sgcarmart. com/robots. txtSeperti yang bisa Anda lihat dari tangkapan layar di atas, untuk contoh sgcarmart. com, ada agen pengguna tertentu yang tidak diizinkan untuk mengikis sub-direktori mana pun dari situs web ini seperti 'Googlebot-Image'. Namun, jika Anda menggunakan 'Applebot' sebagai agen pengguna Anda, Anda dapat merayapi sub-direktori tertentu dengan batas waktu 5 (tidak diizinkan merayapi direktori yang dilarang tersebut). Jika Anda menggunakan grapeshot, Anda dapat merayapi sub-direktori itu tanpa batas waktu (kecepatan perayapan lebih cepat) Langkah-langkah untuk web scraping menggunakan ScrapyDokumentasi/tutorial resmi Scrapy dapat ditemukan di https. //dokumen. scrapy. org/id/terbaru/ Langkah 1. Instal paket Scrapy # install at terminal Atau Anda dapat merujuk ke panduan instalasi. https. //dokumen. scrapy. org/en/terbaru/intro/instal. html Langkah 2. Buat proyek Scrapy Di terminal, cari folder tempat Anda ingin menyimpan kode pengikisan, lalu ketik scrapy startproject <project_name> _Here you should replace Ini akan membuat folder dengan struktur yang ditunjukkan di bawah ini struktur folder proyek ScrapyDi sini sebagian besar file sudah dikonfigurasi sebelumnya dan Anda tidak perlu menyentuhnya. File pertama yang dapat Anda periksa adalah pengaturan. py Kiri (pengaturan asli. py) — Benar (versi pengaturan saya yang dimodifikasi. py)Seperti yang Anda lihat dari tangkapan layar di atas, pengaturan awalnya dibuat. py hanya akan mengikuti robots.py. aturan txt tanpa pengaturan atau agen pengguna apa pun. Anda dapat memodifikasinya dengan menentukan agen pengguna Anda dan menyetel download_delay (seperti yang ditentukan oleh aturan situs web) File lain yang harus Anda modifikasi adalah membuat kode python scraper di folder spiders. Saat ini, hanya ada init. py di folder dan Anda dapat membuat beberapa file scraper di folder dan menggunakannya dalam skenario yang berbeda dan itu akan menjadi langkah 3 kami Langkah 3. Buat kode scraper di bawah folder spidersLangkah ini adalah langkah utama bagi Anda untuk menulis scraper. Anda harus terlebih dahulu membuat file py di bawah folder spiders. Setelah itu, Anda dapat merujuk ke contoh di bawah ini (dari situs web utama Scrapy) untuk struktur kode dasar Contoh kode scrapy — dimodifikasi dari contoh dari https. //dokumen. scrapy. org/en/terbaru/intro/tutorial. htmlDi file py baru yang Anda buat, Anda perlu menentukan kelas scraper dan kemudian menentukan nama scraper Scrapy. Ini karena Anda dapat membuat banyak pengikis di folder laba-laba. Saat Anda menjalankan pengikis, Anda harus menggunakan nama untuk membedakan, jadi Anda perlu memastikan bahwa nama di pengikis berbeda berbeda Setelah itu, struktur dasar memerlukan dua fungsi 'start_requests' dan 'parse'. 'start_requests' mirip dengan peran pustaka permintaan di Python dan akan menaikkan permintaan ke URL situs web yang Anda tetapkan. Harap perhatikan dua hal, di sini Anda tidak mengembalikan fungsi melainkan menghasilkan yang berarti Anda melanjutkan dengan langkah ini. Pada fungsi request, Anda perlu menentukan URL dan juga fungsi callback yaitu untuk mengubah informasi website menjadi konten terstruktur dan kembali ke fungsi ini Fungsi parse yang terakhir mirip dengan peran BeautifulSoup yaitu untuk mengurai konten website. Anda dapat mengurai konten dengan CSS atau XPath. Anda dapat merujuk ke informasi lebih lanjut tentang pemilih di https. //dokumen. scrapy. org/en/terbaru/topik/pemilih. html. Di sini Anda dapat langsung menampilkan data atau membiarkannya nanti untuk ditampilkan menggunakan baris perintah
Langkah Terakhir (Akhirnya). Jalankan Scrapy Scraper di terminalThe last step is simple, just locate your project folder in the terminal and write ‘scrapy crawl Sumber dataKami menggunakan sgcarmart. com sebagai sumber data untuk dirayapi. Seperti yang telah saya tunjukkan sebelumnya, sgCarMart memungkinkan beberapa agen pengguna merayapi beberapa bagian situs web Pernyataan masalahKami ingin menemukan mobil bekas apa yang dijual di platform saat ini. Berapa harga, judul, dan beberapa informasi lainnya? Larutan
3. Mari buka halaman web dan lihat bagaimana kita bisa merayapi Di atas adalah halaman daftar sgcarmart untuk semua mobil bekas yang tersedia. Sebelum memeriksa halaman, kita bisa mendapatkan beberapa informasi berguna
def generate_urls(self):
Jika Anda memeriksa halaman, Anda dapat melihat bahwa setiap URL disimpan dalam atribut href dari tanda kurung kuat. Mari gunakan metode Scrapy shell untuk menguji apakah kita bisa mendapatkan elemen yang benar Pertama kita akan masukan ke terminal di bawah, ingat untuk menambahkan '' di luar URL yang ingin Anda uji scrapy shell 'https://www.sgcarmart.com/used_cars/listing.php?BRSR=40&RPG=20&AVL=2&VEH=0' halaman sukses setelah scrapy shellKalian bisa lihat halaman diatas jika kalian berhasil dan kalian bisa lihat statusnya 200. Setelah itu, Anda bisa mencoba menggunakan CSS atau XPath untuk mendapatkan informasi yang Anda inginkan. Dalam kasus saya, saya ingin mendapatkan semua URL yang dibutuhkan hasil setelah menerapkan pemilih CSSAnda dapat melihat dari tangkapan layar di atas bahwa setelah Anda menerapkan CSS, Anda bisa mendapatkan semua URL. Ada beberapa data kebisingan karena daftar iklan atau URL kedaluwarsa tetapi Anda dapat menghapusnya menggunakan pernyataan if sederhana #parse all main page information and go to each car detail page _halaman detail mobilJika Anda membuka halaman detail mobil apa pun, Anda dapat melihat bahwa semua informasi disimpan dalam format tabel dan Anda dapat menggunakan metode scrapy shell yang sama dan menguji serta mendapatkan elemen data yang benar. Di sini saya menggunakan kamus untuk menyimpan semua bidang data yang diperlukan dan menampilkan seluruh kamus secara bersamaan #parse each car detail page information and retrieve all necessary information 4. Setelah kita memahami struktur dan elemen halaman, mari bersenang-senang membuat kode scraper Kode untuk sgcarmart. py di bawah folder laba-laba5. Terakhir, di terminal kita cari folder proyek lalu ketik scrapy crawl new_car -t csv -O ./output/result.csv _Di sini kami ingin menyimpan semua hasil ke dalam CSV di bawah folder keluaran di bawah direktori yang sama. '-t csv' berarti kita ingin mengubah hasilnya menjadi format CSV, -O akan menimpa file yang ada sementara -o hanya akan menambahkan data ke bawah. Anda juga dapat menentukan format file keluaran dalam kode scraper secara langsung Ini akan memakan waktu cukup lama untuk dijalankan jika Anda merayapi semua halaman. Di sini saya hanya menguji coba perayapan 2 halaman dan itu akan menghasilkan file CSV terstruktur seperti di bawah ini hasil. csv — hasil perayapan Rekomendasi dan kesimpulan akhirArtikel ini bertujuan untuk memperkenalkan Scrapy sebagai salah satu praktik terbaik untuk perayapan web. Format kode perayapan biasanya cukup standar tetapi yang lebih penting adalah kita harus memahami struktur situs web sebelum memulai pengkodean. Strukturnya mencakup informasi seperti URL mana yang akan dirayapi, bidang data apa yang akan dirayapi, apakah ada perubahan tata letak situs web pada halaman yang berbeda, dll. Dalam kasus perubahan elemen situs web, Anda perlu menggunakan pernyataan case when atau walk-around lainnya untuk memastikan hasil akhir terstruktur dan akurat. Selain itu, sebagian besar bidang data masih perlu melalui putaran pembersihan data lainnya sebelum Anda benar-benar dapat menggunakannya seperti Anda perlu mengonversi pajak jalan $959/tahun ke nilai numerik 959 Banyak terima kasih kepada teman saya Timothy Ye dan Liu Zheng atas bantuan kodenya Jika Anda baru mengenal web scraping dan ingin mempelajari lebih lanjut tentang pemilih CSS atau pemilih XPath, Anda dapat belajar dari beberapa kursus online seperti datacamp atau langsung merujuk ke tautan w3school di bawah ini https. // www. w3schools. com/cssref/css_selectors. asp https. // www. w3schools. com/xml/xpath_intro. asp Jika Anda tertarik menggunakan BeautifulSoup atau API langsung (jika tersedia) untuk web scraping, Anda juga dapat merujuk ke artikel saya yang lain di bawah ini. Terima kasih telah membaca dan semoga harimu menyenangkan Bagaimana cara mengikis situs web menggunakan Python Scrapy?Mari kita bicara tentang penginstalan, membuat spider, lalu mengujinya. . Langkah 1. Menciptakan lingkungan virtual. . Langkah 2. Memasang modul Scrapy. . Langkah 3. Membuat proyek Scrapy. . Langkah 4. Membuat Laba-laba. . Langkah 5. Mengambil data dari halaman yang diberikan Apakah Scrapy lebih baik daripada BeautifulSoup?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 Scrapy gratis?Scrapy (/ˈskreɪpaɪ/ SKRAY-peye) adalah framework perayapan web sumber terbuka dan gratis yang ditulis dengan Python dan dikembangkan di Cambuslang. Awalnya dirancang untuk pengikisan web, ini juga dapat digunakan untuk mengekstrak data menggunakan API atau sebagai perayap web tujuan umum.
Apakah Scrapy lebih cepat dari selenium?Selenium adalah alat otomatisasi yang luar biasa dan Scrapy sejauh ini merupakan kerangka kerja pengikisan web yang paling kuat. Saat kami mempertimbangkan web scraping, dalam hal kecepatan dan efisiensi, Scrapy adalah pilihan yang lebih baik . Saat berurusan dengan situs web berbasis JavaScript di mana kita perlu membuat permintaan AJAX/PJAX, Selenium dapat bekerja lebih baik. |