Rumah > Artikel > pembangunan bahagian belakang > Aplikasi praktikal Scrapy dalam merangkak dan analisis data Twitter
Scrapy ialah rangka kerja perangkak web berasaskan Python yang boleh merangkak data dengan pantas daripada Internet dan menyediakan API serta alatan yang ringkas serta mudah digunakan untuk pemprosesan dan analisis data. Dalam artikel ini, kami akan membincangkan kes aplikasi praktikal Scrapy dalam rangkak dan analisis data Twitter.
Twitter ialah platform media sosial dengan pengguna dan sumber data yang besar. Penyelidik, penganalisis media sosial dan saintis data boleh mengakses sejumlah besar data dan menemui cerapan serta maklumat yang menarik melalui perlombongan dan analisis data. Walau bagaimanapun, terdapat beberapa had untuk mendapatkan data melalui API Twitter, dan Scrapy boleh memintas had ini dengan mensimulasikan akses manusia untuk mendapatkan jumlah data Twitter yang lebih besar.
Pertama, kita perlu membuat akaun pembangun Twitter dan memohon Kunci API dan Token Akses. Seterusnya, kita perlu menetapkan parameter akses API Twitter dalam fail settings.py Scrapy, yang akan membolehkan Scrapy mensimulasikan akses manual kepada API Twitter untuk mendapatkan data. Contohnya:
TWITTER_CONSUMER_KEY = 'your_consumer_key' TWITTER_CONSUMER_SECRET = 'your_consumer_secret' TWITTER_ACCESS_TOKEN = 'your_access_token' TWITTER_ACCESS_TOKEN_SECRET = 'your_access_token_secret'
Seterusnya, kita perlu mentakrifkan perangkak Scrapy untuk merangkak data Twitter. Kami boleh menggunakan takrifan Item Scrapy untuk menentukan jenis data yang hendak dirangkak, contohnya:
class TweetItem(scrapy.Item): text = scrapy.Field() created_at = scrapy.Field() user_screen_name = scrapy.Field()
Dalam konfigurasi perangkak, kami boleh menetapkan kata kunci dan julat masa untuk ditanya, contohnya:
class TwitterSpider(scrapy.Spider): name = 'twitter' allowed_domains = ['twitter.com'] start_urls = ['https://twitter.com/search?f=tweets&q=keyword%20since%3A2021-01-01%20until%3A2021-12-31&src=typd'] def parse(self, response): tweets = response.css('.tweet') for tweet in tweets: item = TweetItem() item['text'] = tweet.css('.tweet-text::text').extract_first().strip() item['created_at'] = tweet.css('._timestamp::text').extract_first() item['user_screen_name'] = tweet.css('.username b::text').extract_first().strip() yield item
Dalam perangkak contoh ini, kami menggunakan pemilih CSS untuk mengekstrak semua tweet tentang "kata kunci" di Twitter dari 1 Januari 2021 hingga 31 Disember 2021. Kami menyimpan data dalam objek TweetItem yang ditakrifkan di atas dan menyerahkannya kepada enjin Scrapy melalui pernyataan hasil.
Apabila kami menjalankan perangkak Scrapy, ia akan secara automatik mensimulasikan akses manusia kepada API Twitter, mendapatkan data Twitter dan menyimpannya dalam objek TweetItem jenis data yang ditentukan. Kami boleh menggunakan pelbagai alat dan perpustakaan analisis data yang disediakan oleh Scrapy untuk menganalisis dan melombong data yang dirangkak, seperti:
class TwitterAnalyzer(): def __init__(self, data=[]): self.data = data self.texts = [d['text'] for d in data] self.dates = [dt.strptime(d['created_at'], '%a %b %d %H:%M:%S %z %Y').date() for d in data] def get_top_hashtags(self, n=5): hashtags = Counter([re.findall(r'(?i)#w+', t) for t in self.texts]) return hashtags.most_common(n) def get_top_users(self, n=5): users = Counter([d['user_screen_name'] for d in self.data]) return users.most_common(n) def get_dates_histogram(self, step='day'): if step == 'day': return Counter(self.dates) elif step == 'week': return Counter([date.fromisoformat(str(dt).split()[0]) for dt in pd.date_range(min(self.dates), max(self.dates), freq='W')]) analyzer = TwitterAnalyzer(data) print(analyzer.get_top_hashtags()) print(analyzer.get_top_users()) print(analyzer.get_dates_histogram('day'))
Dalam kod sampel ini, kami mentakrifkan kelas TwitterAnalyzer, yang menggunakan TweetItem Data dalam objek membantu kami memperoleh pelbagai maklumat dan pandangan daripada data Twitter. Kami boleh menggunakan kaedah kelas ini untuk mendapatkan teg cincang yang paling kerap digunakan dalam tweet, mendedahkan perubahan masa dalam pengguna aktif dan data tera, dan banyak lagi.
Ringkasnya, Scrapy ialah alat yang sangat berkesan yang boleh membantu kami mendapatkan data daripada tapak web seperti Twitter, dan kemudian menggunakan teknik perlombongan dan analisis data untuk menemui maklumat dan cerapan yang menarik. Sama ada anda seorang penyelidik akademik, penganalisis media sosial atau peminat sains data, Scrapy ialah alat yang patut dicuba dan digunakan.
Atas ialah kandungan terperinci Aplikasi praktikal Scrapy dalam merangkak dan analisis data Twitter. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!