Rumah pembangunan bahagian belakang Tutorial Python Rangka kerja scrapy dan integrasi pangkalan data: bagaimana untuk melaksanakan penyimpanan data dinamik?

Rangka kerja scrapy dan integrasi pangkalan data: bagaimana untuk melaksanakan penyimpanan data dinamik?

Jun 22, 2023 am 10:35 AM
pangkalan data scrapy data dinamik

Memandangkan jumlah data Internet terus meningkat, cara merangkak, memproses dan menyimpan data dengan cepat dan tepat telah menjadi isu utama dalam pembangunan aplikasi Internet. Sebagai rangka kerja perangkak yang cekap, rangka kerja Scrapy digunakan secara meluas dalam pelbagai senario rangkak data kerana kaedah rangkaknya yang fleksibel dan berkelajuan tinggi.

Walau bagaimanapun, hanya menyimpan data yang dirangkak ke fail tidak dapat memenuhi keperluan kebanyakan aplikasi. Kerana dalam aplikasi semasa, kebanyakan data disimpan, diambil dan dimanipulasi melalui pangkalan data. Oleh itu, cara mengintegrasikan rangka kerja Scrapy dengan pangkalan data untuk mencapai penyimpanan data yang pantas dan dinamik telah menjadi satu cabaran baharu.

Artikel ini akan menggabungkan kes sebenar untuk memperkenalkan cara rangka kerja Scrapy menyepadukan pangkalan data dan melaksanakan storan data dinamik untuk rujukan oleh pembaca yang memerlukan.

1. Persediaan

Sebelum memulakan pengenalan, artikel ini menganggap bahawa pembaca telah pun memahami pengetahuan asas bahasa Python dan beberapa kaedah menggunakan rangka kerja Scrapy, dan boleh menggunakan bahasa Python untuk mencipta pangkalan data mudah beroperasi. Jika anda tidak biasa dengan ini, adalah disyorkan untuk mempelajari pengetahuan yang berkaitan terlebih dahulu dan kemudian membaca artikel ini.

2. Pilih pangkalan data

Sebelum mula mengintegrasikan rangka kerja Scrapy dengan pangkalan data, kita perlu terlebih dahulu memilih pangkalan data yang sesuai untuk menyimpan data yang kita crawl. Pangkalan data yang biasa digunakan pada masa ini termasuk MySQL, PostgreSQL, MongoDB dan banyak pilihan lain.

Pangkalan data ini masing-masing mempunyai kelebihan dan kekurangan masing-masing, pilih mengikut keperluan anda. Sebagai contoh, apabila jumlah data adalah kecil, ia adalah lebih mudah untuk menggunakan pangkalan data MySQL, dan apabila penyimpanan data besar-besaran diperlukan, pangkalan data dokumen MongoDB adalah lebih sesuai.

3. Konfigurasikan maklumat sambungan pangkalan data

Sebelum operasi khusus, kami perlu mengkonfigurasi maklumat sambungan pangkalan data. Sebagai contoh, mengambil pangkalan data MySQL sebagai contoh, anda boleh menggunakan perpustakaan pymysql dalam Python untuk menyambung.

Dalam Scrapy, kami biasanya mengkonfigurasinya dalam tetapan.py:

MYSQL_HOST = 'localhost'
MYSQL_PORT = 3306
MYSQL_USER = 'root'
MYSQL_PASSWORD = '123456'
MYSQL_DBNAME = 'scrapy_demo'
Salin selepas log masuk

Dalam konfigurasi di atas, kami mengkonfigurasi nama hos, nombor port, nama pengguna dan kata laluan di mana pangkalan data MySQL terletak dan nama pangkalan data ini perlu diubah suai mengikut situasi sebenar.

4. Menulis Pipeline storan data

Dalam Scrapy, Pipeline storan data adalah kunci untuk merealisasikan storan data. Kita perlu menulis kelas Pipeline dan kemudian menetapkannya dalam fail konfigurasi Scrapy untuk menyimpan data.

Mengambil storan dalam MySQL sebagai contoh, kami boleh menulis kelas MySQLPipeline seperti berikut:

import pymysql

class MySQLPipeline(object):

    def open_spider(self, spider):
        self.conn = pymysql.connect(host=spider.settings.get('MYSQL_HOST'),
                                    port=spider.settings.get('MYSQL_PORT'),
                                    user=spider.settings.get('MYSQL_USER'),
                                    password=spider.settings.get('MYSQL_PASSWORD'),
                                    db=spider.settings.get('MYSQL_DBNAME'))
        self.cur = self.conn.cursor()

    def close_spider(self, spider):
        self.conn.close()

    def process_item(self, item, spider):
        sql = 'INSERT INTO articles(title, url, content) VALUES(%s, %s, %s)'
        self.cur.execute(sql, (item['title'], item['url'], item['content']))
        self.conn.commit()

        return item
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan kelas MySQLPipeline untuk melaksanakan dok dengan pangkalan data MySQL, dan Tiga kaedah open_spider, close_spider dan process_item ditakrifkan.

Antaranya, kaedah open_spider dipanggil apabila seluruh perangkak mula berjalan untuk memulakan sambungan pangkalan data; kaedah close_spider dipanggil apabila perangkak tamat dan digunakan untuk menutup sambungan pangkalan data. Process_item ialah kaedah yang dipanggil setiap kali data dirangkak untuk menyimpan data dalam pangkalan data.

5. Dayakan Pipeline

Selepas melengkapkan penulisan Pipeline, kami juga perlu mendayakannya dalam tetapan fail konfigurasi Scrapy.py. Cuma tambahkan kelas Pipeline pada pembolehubah ITEM_PIPELINES, seperti ditunjukkan di bawah:

ITEM_PIPELINES = {
    'myproject.pipelines.MySQLPipeline': 300,
}
Salin selepas log masuk

Dalam kod di atas, kami menambah kelas MySQLPipeline pada pembolehubah ITEM_PIPELINES dan menetapkan keutamaan kepada 300, menunjukkan bahawa Item sedang diproses , kelas Pipeline akan menjadi yang ketiga dipanggil.

6. Pengujian dan Operasi

Selepas melengkapkan semua konfigurasi, kami boleh menjalankan perangkak Scrapy dan menyimpan data yang ditangkap dalam pangkalan data MySQL. Langkah dan arahan khusus adalah seperti berikut:

1 Masukkan direktori di mana projek Scrapy terletak dan jalankan arahan berikut untuk mencipta projek Scrapy:

scrapy startproject myproject
Salin selepas log masuk

2 uji fungsi penyimpanan data rangka kerja Scrapy , dan simpan data yang dirangkak ke dalam pangkalan data. Jalankan arahan berikut dalam direktori myproject:

scrapy genspider test_spider baidu.com
Salin selepas log masuk

Arahan di atas akan menghasilkan Spider bernama test_spider untuk merangkak Baidu.

3. Tulis kod Spider Dalam direktori spiders pada direktori test_sprider, buka test_sprider.py dan tulis kod crawler:

import scrapy
from myproject.items import ArticleItem

class TestSpider(scrapy.Spider):
    name = "test"
    allowed_domains = ["baidu.com"]
    start_urls = [
        "https://www.baidu.com",
    ]

    def parse(self, response):
        item = ArticleItem()
        item['title'] = 'MySQL Pipeline测试'
        item['url'] = response.url
        item['content'] = 'Scrapy框架与MySQL数据库整合测试'
        yield item
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan kelas TestSpider, diwarisi daripada Scrapy Kelas Spider terbina dalam digunakan untuk mengendalikan logik crawler. Dalam kaedah parse, kami membina objek Item dan menetapkan tiga kata kunci 'kandungan', 'url' dan 'tajuk'.

4. Cipta fail item dalam direktori myproject untuk mentakrifkan model data:

import scrapy

class ArticleItem(scrapy.Item):
    title = scrapy.Field()
    url = scrapy.Field()
    content = scrapy.Field()
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan kelas ArticleItem untuk menyimpan data artikel yang dirangkak.

5. Kod ujian:

Dalam direktori test_spider, jalankan arahan berikut untuk menguji kod anda:

scrapy crawl test
Salin selepas log masuk

Selepas melaksanakan perintah di atas, Scrapy akan memulakan perangkak TestSpider , dan simpan data yang ditangkap daripada halaman utama Baidu dalam pangkalan data MySQL.

7. Ringkasan

Artikel ini memperkenalkan secara ringkas cara rangka kerja Scrapy berintegrasi dengan pangkalan data dan melaksanakan storan data dinamik. Saya berharap artikel ini dapat membantu pembaca yang memerlukan, dan juga berharap pembaca dapat mengembangkan mengikut keperluan sebenar mereka untuk mencapai fungsi penyimpanan data dinamik yang lebih cekap dan lebih pantas.

Atas ialah kandungan terperinci Rangka kerja scrapy dan integrasi pangkalan data: bagaimana untuk melaksanakan penyimpanan data dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimanakah bahasa Go melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data? Bagaimanakah bahasa Go melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data? Mar 27, 2024 pm 09:39 PM

Bahasa Go ialah bahasa pengaturcaraan yang cekap, ringkas dan mudah dipelajari Ia digemari oleh pembangun kerana kelebihannya dalam pengaturcaraan serentak dan pengaturcaraan rangkaian. Dalam pembangunan sebenar, operasi pangkalan data adalah bahagian yang sangat diperlukan Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data. Dalam bahasa Go, kami biasanya menggunakan perpustakaan pihak ketiga untuk mengendalikan pangkalan data, seperti pakej sql yang biasa digunakan, gorm, dsb. Di sini kami mengambil pakej sql sebagai contoh untuk memperkenalkan cara melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data. Andaikan kami menggunakan pangkalan data MySQL.

Bagaimanakah Hibernate melaksanakan pemetaan polimorfik? Bagaimanakah Hibernate melaksanakan pemetaan polimorfik? Apr 17, 2024 pm 12:09 PM

Pemetaan polimorfik hibernate boleh memetakan kelas yang diwarisi ke pangkalan data dan menyediakan jenis pemetaan berikut: subkelas bercantum: Cipta jadual berasingan untuk subkelas, termasuk semua lajur kelas induk. table-per-class: Cipta jadual berasingan untuk subkelas, yang mengandungi hanya lajur khusus subkelas. union-subclass: serupa dengan joined-subclass, tetapi jadual kelas induk menggabungkan semua lajur subclass.

iOS 18 menambah fungsi album 'Dipulihkan' baharu untuk mendapatkan semula foto yang hilang atau rosak iOS 18 menambah fungsi album 'Dipulihkan' baharu untuk mendapatkan semula foto yang hilang atau rosak Jul 18, 2024 am 05:48 AM

Keluaran terbaharu Apple bagi sistem iOS18, iPadOS18 dan macOS Sequoia telah menambah ciri penting pada aplikasi Photos, yang direka untuk membantu pengguna memulihkan foto dan video yang hilang atau rosak dengan mudah disebabkan pelbagai sebab. Ciri baharu ini memperkenalkan album yang dipanggil "Dipulihkan" dalam bahagian Alat pada apl Foto yang akan muncul secara automatik apabila pengguna mempunyai gambar atau video pada peranti mereka yang bukan sebahagian daripada pustaka foto mereka. Kemunculan album "Dipulihkan" menyediakan penyelesaian untuk foto dan video yang hilang akibat kerosakan pangkalan data, aplikasi kamera tidak disimpan ke pustaka foto dengan betul, atau aplikasi pihak ketiga yang menguruskan pustaka foto. Pengguna hanya memerlukan beberapa langkah mudah

Apr 09, 2024 pm 12:36 PM

HTML tidak boleh membaca pangkalan data secara langsung, tetapi ia boleh dicapai melalui JavaScript dan AJAX. Langkah-langkah termasuk mewujudkan sambungan pangkalan data, menghantar pertanyaan, memproses respons dan mengemas kini halaman. Artikel ini menyediakan contoh praktikal menggunakan JavaScript, AJAX dan PHP untuk membaca data daripada pangkalan data MySQL, menunjukkan cara untuk memaparkan hasil pertanyaan secara dinamik dalam halaman HTML. Contoh ini menggunakan XMLHttpRequest untuk mewujudkan sambungan pangkalan data, menghantar pertanyaan dan memproses respons, dengan itu mengisi data ke dalam elemen halaman dan merealisasikan fungsi HTML membaca pangkalan data.

Tutorial terperinci tentang mewujudkan sambungan pangkalan data menggunakan MySQLi dalam PHP Tutorial terperinci tentang mewujudkan sambungan pangkalan data menggunakan MySQLi dalam PHP Jun 04, 2024 pm 01:42 PM

Cara menggunakan MySQLi untuk mewujudkan sambungan pangkalan data dalam PHP: Sertakan sambungan MySQLi (require_once) Cipta fungsi sambungan (functionconnect_to_db) Fungsi sambungan panggilan ($conn=connect_to_db()) Laksanakan pertanyaan ($result=$conn->query()) Tutup sambungan ( $conn->close())

Bagaimana untuk mengendalikan ralat sambungan pangkalan data dalam PHP Bagaimana untuk mengendalikan ralat sambungan pangkalan data dalam PHP Jun 05, 2024 pm 02:16 PM

Untuk mengendalikan ralat sambungan pangkalan data dalam PHP, anda boleh menggunakan langkah berikut: Gunakan mysqli_connect_errno() untuk mendapatkan kod ralat. Gunakan mysqli_connect_error() untuk mendapatkan mesej ralat. Dengan menangkap dan mengelog mesej ralat ini, isu sambungan pangkalan data boleh dikenal pasti dan diselesaikan dengan mudah, memastikan kelancaran aplikasi anda.

Petua dan amalan untuk mengendalikan aksara Cina bercelaru dalam pangkalan data dengan PHP Petua dan amalan untuk mengendalikan aksara Cina bercelaru dalam pangkalan data dengan PHP Mar 27, 2024 pm 05:21 PM

PHP ialah bahasa pengaturcaraan bahagian belakang yang digunakan secara meluas dalam pembangunan laman web Ia mempunyai fungsi operasi pangkalan data yang kuat dan sering digunakan untuk berinteraksi dengan pangkalan data seperti MySQL. Walau bagaimanapun, disebabkan kerumitan pengekodan aksara Cina, masalah sering timbul apabila berurusan dengan aksara Cina bercelaru dalam pangkalan data. Artikel ini akan memperkenalkan kemahiran dan amalan PHP dalam mengendalikan aksara bercelaru bahasa Cina dalam pangkalan data, termasuk punca biasa aksara bercelaru, penyelesaian dan contoh kod khusus. Sebab biasa aksara bercelaru ialah tetapan set aksara pangkalan data yang salah: set aksara yang betul perlu dipilih semasa mencipta pangkalan data, seperti utf8 atau u

Bagaimana untuk menggunakan fungsi panggil balik pangkalan data di Golang? Bagaimana untuk menggunakan fungsi panggil balik pangkalan data di Golang? Jun 03, 2024 pm 02:20 PM

Menggunakan fungsi panggil balik pangkalan data di Golang boleh mencapai: melaksanakan kod tersuai selepas operasi pangkalan data yang ditentukan selesai. Tambah tingkah laku tersuai melalui fungsi berasingan tanpa menulis kod tambahan. Fungsi panggil balik tersedia untuk operasi memasukkan, mengemas kini, memadam dan pertanyaan. Anda mesti menggunakan fungsi sql.Exec, sql.QueryRow atau sql.Query untuk menggunakan fungsi panggil balik.

See all articles