Bagaimanakah Scrapy mengautomasikan analisis dan carta data?

WBOY
Lepaskan: 2023-06-22 08:24:28
asal
822 orang telah melayarinya

Scrapy ialah rangka kerja perangkak Python yang popular Ia menggunakan sintaks yang ringkas dan mudah difahami untuk mendapatkan maklumat daripada sumber web dengan mudah dan melaksanakan pemprosesan dan analisis automatik. Fleksibiliti dan skalabiliti Scrapy menjadikannya sesuai untuk analisis data dan carta.

Artikel ini akan bermula dengan pengenalan kepada fungsi dan ciri asas Scrapy, kemudian memperkenalkan cara menggunakan Scrapy untuk mengautomasikan analisis data dan langkah melukis carta, dan memberikan beberapa contoh penggunaan, dengan harapan dapat membantu pembaca semasa menganalisis besar jumlah data.

Ciri dan fungsi Scrapy

Sebelum mula memperkenalkan penggunaan Scrapy untuk analisis data dan lukisan carta, mari kita fahami dulu ciri dan fungsi Scrapy:

  1. Scrapy Menyokong pengendalian permintaan dan tindak balas yang sangat disesuaikan, menjadikannya mudah untuk mendapatkan dan memproses data rangkaian.
  2. Menyokong permintaan rangkaian tak segerak, mendayakan rangkak web yang pantas dan cekap.
  3. Data diekstrak berdasarkan pemilih XPath dan CSS, menyokong berbilang format data seperti JSON dan XML.
  4. Boleh berjalan secara berterusan dan menyokong kemas kini dan pengembangan automatik biasa.
  5. Penukaran dan eksport data boleh dicapai dengan mudah melalui pemalam dan sambungan.

Ciri dan fungsi di atas menjadikan Scrapy sebagai alat analisis data dan carta yang sangat baik Mari kita lihat cara menggunakan Scrapy untuk mengautomasikan analisis data dan lukisan carta.

Cara menggunakan Scrapy untuk mengautomasikan analisis data dan lukisan carta

  1. Buat projek Scrapy

Pertama, kita perlu mencipta projek Scrapy melalui arahan berikut:

scrapy startproject myproject
Salin selepas log masuk

Arahan ini akan mencipta direktori baharu bernama myproject, yang mengandungi semua fail dan folder yang diperlukan untuk projek Scrapy.

  1. Menulis Labah-labah

Dalam Scrapy, Labah-labah ialah salah satu komponen terpenting, yang mentakrifkan kelakuan dan peraturan perangkak. Dengan menulis labah-labah, kita boleh memberitahu Scrapy cara mendapatkan dan memproses data halaman web. Di sini, kita perlu menentukan halaman web yang hendak dirangkak, cara menghuraikan halaman, cara mengekstrak data, dsb.

Berikut ialah contoh Spider yang mudah:

import scrapy


class MySpider(scrapy.Spider):
    name = "myspider"
    allowed_domains = ["example.com"]
    start_urls = [
        "http://www.example.com/",
    ]

    def parse(self, response):
        for sel in response.xpath('//ul/li'):
            item = {}
            item['title'] = sel.xpath('a/text()').extract_first()
            item['link'] = sel.xpath('a/@href').extract_first()
            yield item
Salin selepas log masuk

Dalam contoh ini, kami mentakrifkan Spider bernama MySpider, kami menentukan tapak web example.com untuk merangkak dan menentukan Senarai start_urls dicipta, yang mengandungi URL semua halaman web yang ingin kami perolehi. Apabila Spider berjalan, ia akan mendapatkan semua halaman yang sepadan berdasarkan start_urls dan mengekstrak data.

Dalam fungsi parse(), kami menggunakan XPath untuk mengekstrak data yang mengandungi teg a dalam semua teg li, dan kemudian menyimpan tajuk dan pautan dalam medan item masing-masing.

  1. Simpan data ke pangkalan data

Selepas kami memperoleh data, kami perlu menyimpannya ke pangkalan data untuk analisis dan visualisasi seterusnya. Dalam Scrapy, anda boleh menggunakan Item Pipeline untuk menyimpan data secara automatik ke dalam pangkalan data.

import pymongo


class MongoDBPipeline(object):
    def __init__(self):
        self.client = pymongo.MongoClient(host='localhost', port=27017)
        self.db = self.client['mydb']

    def process_item(self, item, spider):
        self.db['mycollection'].insert_one(dict(item))
        return item
Salin selepas log masuk

Dalam contoh ini, kami menggunakan perpustakaan PyMongo untuk menyambung ke pangkalan data MongoDB dan memasukkan data dalam item ke dalam koleksi mycollection dalam fungsi process_item().

  1. Analisis dan carta data

Selepas data kami disimpan dalam pangkalan data, kami boleh menggunakan perpustakaan seperti Pandas, NumPy dan Matplotlib untuk analisis dan carta data.

import pandas as pd
import pymongo
import matplotlib.pyplot as plt


class AnalysisPipeline(object):
    def __init__(self):
        self.client = pymongo.MongoClient(host='localhost', port=27017)
        self.db = self.client['mydb']
        self.collection = self.db['mycollection']

    def process_item(self, item, spider):
        return item

    def close_spider(self, spider):
        df = pd.DataFrame(list(self.collection.find()))
        df['price'] = pd.to_numeric(df['price'])
        df.hist(column='price', bins=20)
        plt.show()
Salin selepas log masuk

Dalam contoh ini, kami membaca data daripada pangkalan data MongoDB ke dalam Pandas DataFrame dan memplot histogram menggunakan pustaka Matplotlib. Kita boleh menggunakan pelbagai fungsi analisis Pandas untuk menganalisis data, seperti mengira min atau sisihan piawai, dsb.

Ringkasan

Dalam artikel ini, kami memperkenalkan ciri dan fungsi Scrapy serta cara menggunakan Scrapy untuk analisis dan carta data automatik. Melalui ciri Scrapy yang fleksibel dan boleh diperluaskan, kami boleh mendapatkan dan memproses data dengan mudah serta menggunakan perpustakaan seperti Pandas dan Matplotlib untuk analisis dan carta data untuk memahami dan menganalisis data dengan lebih baik. Jika anda sedang mencari alat mengikis web automatik yang berkuasa, Scrapy sememangnya satu pilihan yang patut dicuba.

Atas ialah kandungan terperinci Bagaimanakah Scrapy mengautomasikan analisis dan carta data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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