Rumah >pembangunan bahagian belakang >Tutorial Python >Scrapy ialah aplikasi mengikis data yang disertakan dengan templat perangkak

Scrapy ialah aplikasi mengikis data yang disertakan dengan templat perangkak

WBOY
WBOYasal
2023-06-22 09:24:06834semak imbas

Dengan perkembangan teknologi Internet yang berterusan, teknologi crawler juga telah digunakan secara meluas. Teknologi crawler secara automatik boleh merangkak data di Internet dan menyimpannya dalam pangkalan data, memberikan kemudahan untuk analisis data dan perlombongan data. Sebagai rangka kerja perangkak yang sangat terkenal dalam Python, Scrapy dilengkapi dengan beberapa templat perangkak biasa, yang boleh merangkak data dengan cepat pada tapak web sasaran dan menyimpannya secara automatik ke pangkalan data setempat atau awan. Artikel ini akan memperkenalkan cara menggunakan templat perangkak Scrapy sendiri untuk merangkak data dan cara membersihkan, menghuraikan dan menyimpan data semasa proses rangkak.

1. Pengenalan kepada templat perangkak Scrapy

Scrapy disertakan dengan beberapa templat perangkak, termasuk templat asas Spider, templat CrawlSpider dan templat XmlFeedSpider. Templat labah-labah ialah templat perangkak yang paling asas Kelebihannya ialah ia mempunyai pelbagai aplikasi dan mudah digunakan. Templat CrawlSpider ialah templat perangkak berasaskan peraturan yang boleh merangkak pautan berbilang peringkat dengan cepat dan menyokong peraturan tersuai. Templat XmlFeedSpider ialah templat perangkak yang sesuai untuk format XML. Menggunakan templat ini untuk merangkak data boleh mengurangkan kesukaran pembangunan untuk pengaturcara dan meningkatkan kecekapan merangkak.

2. Aplikasi templat perangkak Scrapy

Berikut ialah contoh praktikal untuk menggambarkan cara menggunakan templat Spider Scrapy sendiri untuk merangkak data. Tapak web sasaran yang akan kami rangkak ialah tapak web maklumat filem, dan maklumat filem terkini disenaraikan di halaman utama tapak web tersebut. Kami perlu merangkak nama filem, pengarah, pelakon, penilaian dan maklumat lain dari tapak web ini dan menyimpannya ke pangkalan data tempatan.

  1. Buat projek Scrapy

Mula-mula, anda perlu membuka tetingkap baris arahan, beralih ke direktori kerja sasaran, dan kemudian masukkan arahan berikut:

scrapy startproject movies

Arahan ini Projek Scrapy bernama filem akan dibuat Direktori projek akan mengandungi subdirektori bernama labah-labah, yang digunakan untuk meletakkan program perangkak.

  1. Buat Templat Spider

Dalam direktori projek, gunakan arahan berikut untuk mencipta Spider bernama movie_spider:

scrapy genspider movie_spider www.movies.com

Arahan ini akan Menjana secara automatik program berdasarkan templat Spider, di mana www.movies.com mewakili nama domain tapak web sasaran. Dalam direktori spiders, fail bernama movie_spider.py akan muncul dengan kandungan berikut:

import scrapy

class MovieSpider(scrapy.Spider):
    name = 'movie_spider'
    allowed_domains = ['www.movies.com']
    start_urls = ['http://www.movies.com/']

    def parse(self, response):
        pass

Ini ialah program Spider yang paling asas. Antaranya, nama mewakili nama perangkak, allowed_domains mewakili senarai nama domain yang dibenarkan untuk dirangkak dan start_urls mewakili senarai URL mula merangkak. Dalam kaedah parse, kita perlu menulis kod untuk menghurai dan merebut data.

  1. Tangkapan dan analisis data

Kita perlu menulis kod untuk menangkap dan menghuraikan data tapak web sasaran daripada objek tindak balas. Untuk tapak web maklumat filem yang baru disebut, kami boleh menggunakan pemilih XPath atau CSS untuk mencari elemen pada halaman. Dengan mengandaikan bahawa nama filem disimpan dalam elemen div dengan nama filem kelas pada halaman, maka kita boleh menggunakan kod berikut untuk mengekstrak semua nama filem:

def parse(self, response):
    movies = response.xpath('//div[@class="movie-name"]/text()').extract()
    for movie in movies:
        yield {'name': movie}

Di sini, kami menggunakan sintaks XPath untuk mencari Semua div elemen dengan nama filem kelas digunakan, dan kaedah ekstrak digunakan untuk mengekstrak kandungan teks dalam elemen. Seterusnya, kami menggunakan gelung for untuk menghasilkan setiap nama filem sebagai output penjana.

Begitu juga, kami boleh mencari elemen lain yang kami minati melalui pemilih XPath atau CSS. Sebagai contoh, maklumat pengarah dan pelakon boleh disimpan dalam elemen div dengan pengarah kelas, dan maklumat penarafan boleh disimpan dalam elemen div dengan kadar kelas.

  1. Storan Data

Dalam program Spider, kita perlu menulis kod untuk menyimpan data yang ditangkap ke pangkalan data setempat atau awan. Scrapy menyokong menyimpan data ke pelbagai pangkalan data yang berbeza, termasuk MySQL, PostgreSQL, MongoDB, dll.

Sebagai contoh, kami boleh menggunakan pangkalan data MySQL untuk menyimpan maklumat filem. Dalam direktori spiders, kita boleh mencipta fail bernama mysql_pipeline.py, yang mengandungi kod berikut:

import pymysql

class MysqlPipeline(object):
    def __init__(self):
        self.conn = pymysql.connect(host='localhost', user='root', passwd='123456', db='movie_db', charset='utf8')

    def process_item(self, item, spider):
        cursor = self.conn.cursor()
        sql = "INSERT INTO movie(name, director, actors, rate) VALUES(%s, %s, %s, %s)"
        cursor.execute(sql, (item['name'], item['director'], item['actors'], item['rate']))
        self.conn.commit()

    def __del__(self):
        self.conn.close()

Program ini akan menyimpan data pelaksanaan ke pangkalan data MySQL, di mana movie_db ialah nama pangkalan data dan filem jadual akan mengandungi Empat medan nama, pengarah, pelakon dan kadar digunakan untuk menyimpan nama filem, pengarah, pelakon dan maklumat penilaian. Kaedah process_item digunakan untuk menyimpan item yang dihasilkan dalam program Spider ke pangkalan data.

Untuk menggunakan fail mysql_pipeline.py, kami juga perlu menambah konfigurasi berikut dalam fail settings.py:

ITEM_PIPELINES = {
    'movies.spiders.mysql_pipeline.MysqlPipeline': 300
}

Di sini, 'movies.spiders.mysql_pipeline.MysqlPipeline' menentukan lokasi fail mysql_pipeline.py dan nama kelas. Nombor 300 menunjukkan keutamaan pemprosesan data Semakin kecil bilangannya, semakin tinggi keutamaannya.

  1. Jalankan program Scrapy

Dalam direktori spiders, laksanakan arahan berikut untuk menjalankan program Scrapy:

scrapy crawl movie_spider

Arahan ini akan memulakan movie_spider Program crawler mula merangkak data tapak web sasaran dan menyimpannya ke dalam pangkalan data MySQL.

3. Ringkasan

Artikel ini memperkenalkan cara menggunakan templat perangkak Scrapy sendiri untuk merangkak data, termasuk templat Spider, templat CrawlSpider dan templat XmlFeedSpider. Kami mengambil contoh praktikal untuk menggambarkan cara menggunakan templat Spider untuk menangkap dan menghuraikan data, dan menyimpan hasilnya ke pangkalan data MySQL. Menggunakan Scrapy untuk penangkapan data boleh meningkatkan kecekapan dan kualiti pengumpulan data dengan sangat baik, dan memberikan sokongan kukuh untuk analisis data seterusnya, perlombongan data dan kerja lain.

Atas ialah kandungan terperinci Scrapy ialah aplikasi mengikis data yang disertakan dengan templat perangkak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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