Rumah > pembangunan bahagian belakang > Tutorial Python > Amalan rangka kerja buruk: merangkak data tapak web Jianshu

Amalan rangka kerja buruk: merangkak data tapak web Jianshu

WBOY
Lepaskan: 2023-06-22 09:36:56
asal
1348 orang telah melayarinya

Amalan rangka kerja Scrapy: merangkak data tapak web Jianshu

Scrapy ialah rangka kerja perangkak Python sumber terbuka yang boleh digunakan untuk mengekstrak data daripada World Wide Web. Dalam artikel ini, kami akan memperkenalkan rangka kerja Scrapy dan menggunakannya untuk merangkak data daripada tapak web Jianshu.

  1. Memasang Scrapy

Scrapy boleh dipasang menggunakan pengurus pakej seperti pip atau conda. Di sini, kami menggunakan pip untuk memasang Scrapy. Masukkan arahan berikut dalam baris arahan:

pip install scrapy
Salin selepas log masuk

Setelah pemasangan selesai, anda boleh menggunakan arahan berikut untuk menyemak sama ada Scrapy telah berjaya dipasang:

scrapy version
Salin selepas log masuk

Jika anda melihat sesuatu seperti " Scrapy x.x.x - tiada keluaran projek aktif", Scrapy telah berjaya dipasang.

  1. Buat projek Scrapy

Sebelum kita mula menggunakan Scrapy, kita perlu mencipta projek Scrapy. Masukkan arahan berikut pada baris arahan:

scrapy startproject jianshu
Salin selepas log masuk

Ini akan mencipta projek Scrapy bernama "jianshu" dalam direktori semasa.

  1. Membuat perangkak Scrapy

Dalam Scrapy, perangkak ialah komponen yang memproses data yang diekstrak daripada tapak web. Kami menggunakan Scrapy Shell untuk menganalisis tapak web Jianshu dan mencipta perangkak.

Masukkan arahan berikut pada baris arahan:

scrapy shell "https://www.jianshu.com"
Salin selepas log masuk

Ini akan melancarkan Scrapy Shell di mana kami boleh melihat kod sumber halaman dan elemen tapak web Jianshu untuk membuat pemilih untuk perangkak kami .

Sebagai contoh, kita boleh menggunakan pemilih berikut untuk mengekstrak tajuk artikel:

response.css('h1.title::text').extract_first()
Salin selepas log masuk

Kita boleh menggunakan pemilih berikut untuk mengekstrak pengarang artikel:

response.css('a.name::text').extract_first()
Salin selepas log masuk

Diuji dalam Scrapy Shell Selepas memilih pemilih, kami boleh mencipta fail Python baharu untuk perangkak kami. Masukkan arahan berikut pada baris arahan:

scrapy genspider jianshu_spider jianshu.com
Salin selepas log masuk

Ini akan mencipta perangkak Scrapy bernama "jianshu_spider". Kami boleh menambah pemilih yang kami uji dalam Scrapy Shell pada fail .py perangkak dan menentukan data untuk diekstrak.

Sebagai contoh, kod berikut mengekstrak tajuk dan pengarang semua artikel di halaman utama tapak web Jianshu:

import scrapy

class JianshuSpider(scrapy.Spider):
    name = 'jianshu_spider'
    allowed_domains = ['jianshu.com']
    start_urls = ['https://www.jianshu.com/']

    def parse(self, response):
        for article in response.css('li[data-note-id]'):
            yield {
                'title': article.css('a.title::text').extract_first(),
                'author': article.css('a.name::text').extract_first(),
            }
Salin selepas log masuk
  1. Jalankan perangkak Scrapy dan keluarkan hasilnya

Sekarang, kami melaksanakan perangkak Scrapy dalam mod baris arahan dan mengeluarkan hasilnya kepada fail JSON. Masukkan arahan berikut pada baris arahan:

scrapy crawl jianshu_spider -o articles.json
Salin selepas log masuk

Perintah ini akan menjalankan perangkak kami dan menyimpan data output ke fail JSON yang dipanggil "articles.json".

  1. Kesimpulan

Dalam artikel ini, kami memperkenalkan rangka kerja Scrapy dan menggunakannya untuk mengikis data daripada tapak web Jianshu. Mengekstrak data daripada tapak web adalah mudah menggunakan rangka kerja Scrapy, dan Scrapy adalah serentak dan berskala supaya ia boleh menskalakan ke dalam aplikasi pengekstrakan data berskala besar.

Atas ialah kandungan terperinci Amalan rangka kerja buruk: merangkak data tapak web Jianshu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan