Heim > Artikel > Backend-Entwicklung > Implementierung des Scrapy-Frameworks zum Crawlen von Twitter-Daten
Implementierung des Scrapy-Frameworks zum Crawlen von Twitter-Daten
Mit der Entwicklung des Internets sind soziale Medien zu einer der von Menschen am häufigsten genutzten Plattformen geworden. Als eines der größten sozialen Netzwerke der Welt generiert Twitter täglich riesige Mengen an Informationen. Daher ist es besonders wichtig, die vorhandenen technischen Mittel zu nutzen, um Daten auf Twitter effektiv zu erhalten und zu analysieren.
Scrapy ist ein Python-Open-Source-Framework, das zum Crawlen und Extrahieren von Daten auf bestimmten Websites entwickelt wurde. Im Vergleich zu anderen ähnlichen Frameworks weist Scrapy eine höhere Skalierbarkeit und Anpassungsfähigkeit auf und kann große soziale Netzwerkplattformen wie Twitter gut unterstützen. In diesem Artikel wird erläutert, wie Sie das Scrapy-Framework zum Crawlen von Twitter-Daten verwenden.
Bevor wir mit der Crawling-Arbeit beginnen, müssen wir die Python-Umgebung und das Scrapy-Framework konfigurieren. Am Beispiel des Ubuntu-Systems können Sie den folgenden Befehl verwenden, um die erforderlichen Komponenten zu installieren:
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
Der erste Schritt bei der Verwendung des Scrapy-Frameworks zum Crawlen von Twitter-Daten besteht darin, ein Scrapy-Projekt zu erstellen. Geben Sie im Terminal den folgenden Befehl ein:
scrapy startproject twittercrawler
Dieser Befehl erstellt im aktuellen Verzeichnis einen Projektordner mit dem Namen „twittercrawler“, der einige automatisch generierte Dateien und Ordner enthält.
Öffnen Sie das Scrapy-Projekt. Wir sehen eine Datei mit dem Namen „settings.py“. Diese Datei enthält verschiedene Crawler-Konfigurationsoptionen, wie z. B. Crawler-Verzögerungszeit, Datenbankeinstellungen, Anforderungsheader usw. Hier müssen wir die folgenden Konfigurationsinformationen hinzufügen:
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
Die Funktion dieser Konfigurationsoptionen ist:
Im Scrapy-Framework wird jeder Crawler durch eine Klasse namens „Spider“ implementiert. In diesem Kurs können wir definieren, wie Webseiten gecrawlt, analysiert und lokal oder in einer Datenbank gespeichert werden. Um Daten auf Twitter zu crawlen, müssen wir eine Datei namens „twitter_spider.py“ erstellen und darin die TwitterSpider-Klasse definieren. Das Folgende ist der Code von 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)
In der TwitterSpider-Klasse geben wir den Domänennamen und die Start-URL der zu crawlenden Website an. In der Initialisierungsfunktion legen wir den Anforderungsheader fest, um eine Einschränkung durch Anti-Crawler zu vermeiden. In der Parse-Funktion verwenden wir XPath-Ausdrücke, um die erhaltenen Webseiten einzeln zu analysieren und sie in einem Python-Wörterbuch zu speichern. Schließlich verwenden wir die Yield-Anweisung, um das Wörterbuch zurückzugeben, damit das Scrapy-Framework es lokal oder in einer Datenbank speichern kann. Darüber hinaus verwenden wir auch eine einfache rekursive Funktion, um die „nächste Seite“ der Twitter-Suchergebnisse zu verarbeiten, wodurch wir problemlos mehr Daten erhalten können.
Nachdem wir mit dem Schreiben der TwitterSpider-Klasse fertig sind, müssen wir zum Terminal zurückkehren, den gerade erstellten Ordner „twittercrawler“ aufrufen und den folgenden Befehl ausführen, um den Crawler zu starten:
scrapy crawl twitter -o twitter.json
Dieser Befehl startet den Crawler namens crawler for „twitter“ und speichert die Ergebnisse in einer Datei namens „twitter.json“.
Bisher haben wir vorgestellt, wie man das Scrapy-Framework zum Crawlen von Twitter-Daten verwendet. Dies ist natürlich erst der Anfang. Wir können die TwitterSpider-Klasse weiter erweitern, um weitere Informationen zu erhalten, oder andere Datenanalysetools verwenden, um die erhaltenen Daten zu verarbeiten. Durch das Erlernen der Verwendung des Scrapy-Frameworks können wir Daten effizienter verarbeiten und nachfolgende Datenanalysearbeiten leistungsfähiger unterstützen.
Das obige ist der detaillierte Inhalt vonImplementierung des Scrapy-Frameworks zum Crawlen von Twitter-Daten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!