Rumah >pembangunan bahagian belakang >Tutorial Python >Pelaksanaan rangka kerja Scrapy untuk merangkak data Twitter
Pelaksanaan rangka kerja Scrapy untuk merangkak data Twitter
Dengan perkembangan Internet, media sosial telah menjadi salah satu platform yang digunakan secara meluas oleh orang ramai. Sebagai salah satu rangkaian sosial terbesar di dunia, Twitter menjana sejumlah besar maklumat setiap hari. Oleh itu, cara menggunakan cara teknikal sedia ada untuk mendapatkan dan menganalisis data secara berkesan di Twitter telah menjadi sangat penting.
Scrapy ialah rangka kerja sumber terbuka Python yang direka untuk merangkak dan mengekstrak data pada tapak web tertentu. Berbanding dengan rangka kerja lain yang serupa, Scrapy mempunyai kebolehskalaan dan kebolehsuaian yang lebih tinggi, dan boleh menyokong platform rangkaian sosial yang besar seperti Twitter. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Scrapy untuk merangkak data Twitter.
Sebelum memulakan kerja merangkak, kita perlu mengkonfigurasi persekitaran Python dan rangka kerja Scrapy. Mengambil sistem Ubuntu sebagai contoh, anda boleh menggunakan arahan berikut untuk memasang komponen yang diperlukan:
sudo apt-get update && sudo apt-get install python-pip python-dev libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev sudo pip install scrapy
Langkah pertama untuk menggunakan rangka kerja Scrapy untuk merangkak data Twitter adalah untuk mencipta projek Scrapy. Masukkan arahan berikut dalam terminal:
scrapy startproject twittercrawler
Arahan ini akan mencipta folder projek bernama "twittercrawler" dalam direktori semasa, yang termasuk beberapa fail dan folder yang dijana secara automatik.
Buka projek Scrapy dan kita boleh melihat fail bernama "settings.py". Fail ini mengandungi pelbagai pilihan konfigurasi perangkak, seperti masa tunda perangkak, tetapan pangkalan data, pengepala permintaan, dsb. Di sini, kita perlu menambah maklumat konfigurasi berikut:
ROBOTSTXT_OBEY = False USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' DOWNLOAD_DELAY = 5 CONCURRENT_REQUESTS = 1
Fungsi pilihan konfigurasi ini ialah:
Dalam rangka kerja Scrapy, setiap perangkak dilaksanakan melalui kelas yang dipanggil "Spider". Dalam kelas ini, kita boleh menentukan cara merangkak dan menghuraikan halaman web dan menyimpannya secara setempat atau dalam pangkalan data. Untuk merangkak data di Twitter, kami perlu mencipta fail yang dipanggil "twitter_spider.py" dan mentakrifkan kelas TwitterSpider di dalamnya. Berikut ialah kod TwitterSpider:
import scrapy from scrapy.http import Request class TwitterSpider(scrapy.Spider): name = 'twitter' allowed_domains = ['twitter.com'] start_urls = ['https://twitter.com/search?q=python'] def __init__(self): self.headers = { 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'en-US,en;q=0.5', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36', 'X-Requested-With': 'XMLHttpRequest' } def parse(self, response): for tweet in response.xpath('//li[@data-item-type="tweet"]'): item = {} item['id'] = tweet.xpath('.//@data-item-id').extract_first() item['username'] = tweet.xpath('.//@data-screen-name').extract_first() item['text'] = tweet.xpath('.//p[@class="TweetTextSize js-tweet-text tweet-text"]//text()').extract_first() item['time'] = tweet.xpath('.//span//@data-time').extract_first() yield item next_page = response.xpath('//a[@class="js-next-page"]/@href').extract_first() if next_page: url = response.urljoin(next_page) yield Request(url, headers=self.headers, callback=self.parse)
Dalam kelas TwitterSpider, kami menentukan nama domain dan URL permulaan tapak web untuk dirangkak. Dalam fungsi permulaan, kami menetapkan pengepala permintaan untuk mengelak daripada disekat oleh anti-perakak. Dalam fungsi parse, kami menggunakan ungkapan XPath untuk menghuraikan halaman web yang diperoleh satu demi satu dan menyimpannya ke dalam kamus Python. Akhir sekali, kami menggunakan pernyataan hasil untuk mengembalikan kamus supaya rangka kerja Scrapy boleh menyimpannya secara setempat atau dalam pangkalan data. Selain itu, kami juga menggunakan fungsi rekursif mudah untuk memproses "halaman seterusnya" hasil carian Twitter, yang membolehkan kami memperoleh lebih banyak data dengan mudah.
Selepas kita selesai menulis kelas TwitterSpider, kita perlu kembali ke terminal, masukkan folder "twittercrawler" yang baru kita buat dan jalankan arahan berikut untuk Mulakan perangkak:
scrapy crawl twitter -o twitter.json
Arahan ini akan memulakan perangkak bernama "twitter" dan menyimpan hasilnya ke fail bernama "twitter.json".
Setakat ini, kami telah memperkenalkan cara menggunakan rangka kerja Scrapy untuk merangkak data Twitter. Sudah tentu, ini hanyalah permulaan, kita boleh terus melanjutkan kelas TwitterSpider untuk mendapatkan lebih banyak maklumat, atau menggunakan alat analisis data lain untuk memproses data yang diperolehi. Dengan mempelajari penggunaan rangka kerja Scrapy, kami boleh memproses data dengan lebih cekap dan memberikan sokongan yang lebih berkuasa untuk kerja analisis data seterusnya.
Atas ialah kandungan terperinci Pelaksanaan rangka kerja Scrapy untuk merangkak data Twitter. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!