Mise en œuvre du framework Scrapy pour explorer les données Twitter
Avec le développement d'Internet, les médias sociaux sont devenus l'une des plateformes largement utilisées par les gens. En tant que l’un des plus grands réseaux sociaux au monde, Twitter génère chaque jour d’énormes quantités d’informations. Par conséquent, la manière d’utiliser les moyens techniques existants pour obtenir et analyser efficacement les données sur Twitter est devenue particulièrement importante.
Scrapy est un framework open source Python conçu pour explorer et extraire des données sur des sites Web spécifiques. Comparé à d'autres frameworks similaires, Scrapy a une évolutivité et une adaptabilité plus élevées et peut bien prendre en charge de grandes plateformes de réseaux sociaux telles que Twitter. Cet article explique comment utiliser le framework Scrapy pour explorer les données Twitter.
Avant de commencer le travail d'exploration, nous devons configurer l'environnement Python et le framework Scrapy. En prenant le système Ubuntu comme exemple, vous pouvez utiliser la commande suivante pour installer les composants requis :
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
La première étape de l'utilisation du framework Scrapy pour explorer les données Twitter consiste à créer un projet Scrapy. Entrez la commande suivante dans le terminal :
scrapy startproject twittercrawler
Cette commande créera un dossier de projet nommé "twittercrawler" dans le répertoire courant, qui comprend certains fichiers et dossiers générés automatiquement.
Ouvrez le projet Scrapy, nous pouvons voir un fichier nommé "settings.py". Ce fichier contient diverses options de configuration du robot, telles que le délai du robot, les paramètres de la base de données, les en-têtes de requête, etc. Ici, nous devons ajouter les informations de configuration suivantes :
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
La fonction de ces options de configuration est :
Dans le framework Scrapy, chaque robot est implémenté via une classe appelée "Spider". Dans ce cours, nous pouvons définir comment explorer et analyser les pages Web et les enregistrer localement ou dans une base de données. Afin d'explorer les données sur Twitter, nous devons créer un fichier appelé "twitter_spider.py" et y définir la classe TwitterSpider. Voici le code de 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)
Dans la classe TwitterSpider, nous spécifions le nom de domaine et l'URL de départ du site Web à explorer. Dans la fonction d'initialisation, nous définissons l'en-tête de la requête pour éviter d'être restreint par les anti-crawlers. Dans la fonction d'analyse, nous utilisons des expressions XPath pour analyser les pages Web obtenues une par une et les enregistrer dans un dictionnaire Python. Enfin, nous utilisons l'instruction rendement pour renvoyer le dictionnaire afin que le framework Scrapy puisse le stocker localement ou dans une base de données. De plus, nous utilisons également une simple fonction récursive pour traiter la « page suivante » des résultats de recherche Twitter, ce qui nous permet d'obtenir facilement plus de données.
Après avoir fini d'écrire la classe TwitterSpider, nous devons retourner au terminal, entrer dans le dossier "twittercrawler" que nous venons de créer et exécuter la commande suivante pour démarrer le robot d'exploration :
scrapy crawl twitter -o twitter.json
Cette commande démarrera le robot nommé robot pour « twitter » et enregistrera les résultats dans un fichier nommé « twitter.json ».
Jusqu'à présent, nous avons présenté comment utiliser le framework Scrapy pour explorer les données Twitter. Bien sûr, ce n'est qu'un début, nous pouvons continuer à étendre la classe TwitterSpider pour obtenir plus d'informations, ou utiliser d'autres outils d'analyse de données pour traiter les données obtenues. En apprenant à utiliser le framework Scrapy, nous pouvons traiter les données plus efficacement et fournir un support plus puissant pour les travaux d'analyse de données ultérieurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!