Rumah > Artikel > pembangunan bahagian belakang > Scrapy melaksanakan pengumpulan dan analisis data laman web berita
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:
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.
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.
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.
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.
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 .
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!