Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Scrapy melaksanakan pengumpulan dan analisis data laman web berita

Scrapy melaksanakan pengumpulan dan analisis data laman web berita

PHPz
PHPzasal
2023-06-22 19:34:351414semak imbas

Dengan perkembangan teknologi Internet yang berterusan, laman web berita telah menjadi cara utama orang ramai mendapatkan maklumat hal ehwal semasa. Cara cepat dan cekap mengumpul dan menganalisis data daripada laman web berita telah menjadi salah satu hala tuju penyelidikan penting dalam bidang Internet semasa. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Scrapy untuk melaksanakan pengumpulan dan analisis data di tapak web berita.

1. Pengenalan kepada rangka kerja Scrapy

Scrapy ialah rangka kerja perangkak web sumber terbuka yang ditulis dalam Python, yang boleh digunakan untuk mengekstrak data berstruktur daripada tapak web. Rangka kerja Scrapy adalah berdasarkan rangka kerja Twisted dan boleh merangkak sejumlah besar data dengan cepat dan cekap. Scrapy mempunyai ciri berikut:

  1. Ciri berkuasa - Scrapy menyediakan banyak ciri berguna, seperti permintaan dan pengendali tersuai, mekanisme automatik, alat nyahpepijat, dsb.
  2. Konfigurasi fleksibel - Rangka kerja Scrapy menyediakan sejumlah besar pilihan konfigurasi yang boleh dikonfigurasikan secara fleksibel mengikut keperluan perangkak tertentu.
  3. Mudah untuk dikembangkan - Reka bentuk seni bina Scrapy sangat jelas dan boleh dikembangkan dengan mudah dan dibangunkan secara sekunder.

2. Pengumpulan data laman web berita

Untuk pengumpulan data di laman web berita, kita boleh menggunakan rangka kerja Scrapy untuk merangkak laman web berita. Berikut mengambil laman web Sina News sebagai contoh untuk memperkenalkan penggunaan rangka kerja Scrapy.

  1. Buat projek Scrapy baharu

Masukkan arahan berikut pada baris arahan untuk mencipta projek Scrapy baharu:

scrapy startproject sina_news

Arahan ini akan mencipta projek Scrapy baharu bernama sina_news dalam direktori semasa.

  1. Menulis Spider

Dalam projek Scrapy yang baru dibuat, anda boleh melaksanakan rangkak web dengan menulis Spider. Dalam Scrapy, Spider ialah kelas Python khas yang digunakan untuk menentukan cara merangkak data tapak web. Berikut ialah contoh laman web berita Spider for a Sina:

import scrapy

class SinaNewsSpider(scrapy.Spider):
    name = 'sina_news'
    start_urls = [
        'https://news.sina.com.cn/', # 新浪新闻首页
    ]

    def parse(self, response):
        for news in response.css('div.news-item'):
            yield {
                'title': news.css('a::text').extract_first(),
                'link': news.css('a::attr(href)').extract_first(),
                'datetime': news.css('span::text').extract_first(),
            }

Spider mentakrifkan peraturan untuk merangkak tapak web berita dan cara menghuraikan respons. Dalam kod di atas, kami mentakrifkan Spider bernama "sina_news" dan menentukan URL permulaan sebagai halaman utama Berita Sina. Pada masa yang sama, kami juga menentukan fungsi parse untuk menghuraikan respons tapak web.

Dalam fungsi parse ini, kami menggunakan sintaks Pemilih CSS untuk mengekstrak tajuk, pautan dan masa penerbitan berita dan mengembalikan maklumat ini dalam bentuk kamus.

  1. Run the Spider

Selepas melengkapkan penulisan Spider, kita boleh menjalankan Spider dan merangkak data. Masukkan arahan berikut dalam baris arahan:

scrapy crawl sina_news -o sina_news.json

Arahan ini akan memulakan "sina_news" Spider dan menyimpan data yang dirangkak ke fail bernama sina_news .json fail JSON.

3. Analisis data laman web berita

Selepas melengkapkan pengumpulan data, kami perlu menganalisis data yang dikumpul dan mengekstrak maklumat berharga daripadanya.

  1. Pembersihan Data

Apabila mengumpul data secara besar-besaran, anda sering menghadapi beberapa data yang bising. Oleh itu, sebelum menjalankan analisis data, kita perlu membersihkan data yang dikumpul. Berikut menggunakan perpustakaan Python Pandas sebagai contoh untuk memperkenalkan cara melakukan pembersihan data.

Baca data berita Sina yang dikumpul:

import panda sebagai pd

df = pd.read_json('sina_news.json')

Sekarang Kami mendapat set data jenis DataFrame. Dengan mengandaikan bahawa terdapat beberapa data pendua dalam set data ini, kami boleh menggunakan pustaka Pandas untuk pembersihan data:

df.drop_duplicates(inplace=True)

Barisan kod di atas akan memadamkan data pendua dalam set data .

  1. Analisis Data

Selepas pembersihan data, kami boleh menganalisis data yang dikumpul selanjutnya. Berikut adalah beberapa teknik analisis data yang biasa digunakan.

(1) Analisis kata kunci

Kita boleh memahami topik hangat semasa dengan menjalankan analisis kata kunci pada tajuk berita. Berikut ialah contoh analisis kata kunci pada tajuk berita Sina:

dari jieba.analyse import extract_tags

kata kunci = extract_tags(df['title'].to_string(), topK=20 , withWeight=False, allowPOS=('ns', 'n'))
print(keyword)

Kod di atas menggunakan fungsi extract_tags pustaka jieba untuk mengekstrak 20 kata kunci tajuk berita teratas.

(2) Analisis siri masa

Kita boleh memahami arah aliran peristiwa berita dengan mengira tajuk berita dalam susunan kronologi. Berikut ialah contoh analisis siri masa berita Sina mengikut bulan:

df['datetime'] = pd.to_datetime(df['datetime'])
df = df.set_index('datetime ')
df_month = df.resample('M').count()
print(df_month)

Kod di atas menukar masa keluaran berita kepada jenis Datetime Pandas dan Tetapkan kepada indeks daripada set data. Kami kemudian menggunakan fungsi sampel semula untuk sampel semula bulan dan mengira bilangan siaran berita setiap bulan.

(3) Klasifikasi berdasarkan analisis sentimen

Kami boleh mengklasifikasikan berita dengan melakukan analisis sentimen pada tajuk berita. Berikut ialah contoh analisis sentimen mengenai berita Sina:

daripada import snownlp SnowNLP

df['sentimen'] = df['title'].apply(lambda x: SnowNLP(x ).sentimen)
berita_positif = df[df['sentimen'] > 0.6]
berita_negatif = df[df['sentimen'] <= 0.4]
cetak('Kiraan Berita Positif:' , len(berita_positif))
cetak('Kiraan Berita Negatif:', len(berita_negatif))

Kod di atas menggunakan perpustakaan SnowNLP untuk analisis sentimen dan mentakrifkan berita dengan nilai sentimen lebih daripada 0.6 sebagai berita positif dan berita dengan nilai sentimen kurang daripada atau sama dengan 0.4 sebagai berita negatif.

4. Ringkasan

Artikel ini memperkenalkan cara menggunakan rangka kerja Scrapy untuk mengumpul data tapak web berita dan pustaka Pandas untuk pembersihan dan analisis data. Rangka kerja Scrapy menyediakan fungsi perangkak web yang berkuasa yang boleh merangkak sejumlah besar data dengan cepat dan cekap. Pustaka Pandas menyediakan banyak pemprosesan data dan fungsi analisis statistik yang boleh membantu kami mengekstrak maklumat berharga daripada data yang dikumpul. Dengan menggunakan alatan ini, kita boleh lebih memahami topik hangat semasa dan mendapatkan maklumat berguna daripadanya.

Atas ialah kandungan terperinci Scrapy melaksanakan pengumpulan dan analisis data laman web berita. 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