Heim >Backend-Entwicklung >Python-Tutorial >Verwenden Sie den Scrapy-Crawler, um Papierdaten im Bereich Deep Learning zu erfassen

Verwenden Sie den Scrapy-Crawler, um Papierdaten im Bereich Deep Learning zu erfassen

WBOY
WBOYOriginal
2023-06-23 09:33:221883Durchsuche

Deep Learning ist derzeit eine der beliebtesten und modernsten Forschungsrichtungen im Bereich der künstlichen Intelligenz. Für Wissenschaftler und Praktiker, die in der entsprechenden Forschung tätig sind, ist die Beschaffung von Datensätzen eine wichtige Voraussetzung für die Durchführung vertiefter Forschung. Allerdings werden die meisten hochwertigen Deep-Learning-Forschungsarbeiten auf führenden internationalen akademischen Konferenzen (wie NeurIPS, ICLR, ICML usw.) veröffentlicht und es ist schwierig, diese Arbeiten zu erhalten. Daher wird in diesem Artikel erläutert, wie die Scrapy-Crawler-Technologie zum Crawlen von Papierdaten im Bereich Deep Learning verwendet wird.

Zunächst müssen wir die zu crawlende Zielwebsite bestimmen. Zu den beliebtesten Websites, die Deep-Learning-Artikel verwalten, gehören derzeit arXiv und OpenReview. In diesem Artikel entscheiden wir uns für das Crawlen der arXiv-Daten. arXiv ist eine Website, die wissenschaftliche Arbeiten verwaltet, darunter Arbeiten in vielen Bereichen, darunter auch Arbeiten im Bereich Deep Learning. Gleichzeitig bietet die arXiv-Website auch eine praktische API-Schnittstelle, über die unser Crawler-Programm problemlos Papierdaten abrufen kann.

Als nächstes können wir mit dem Schreiben des Scrapy-Crawler-Programms beginnen. Geben Sie zunächst den folgenden Befehl im Terminal ein, um ein Scrapy-Projekt zu erstellen:

scrapy startproject deep_learning_papers

Geben Sie nach der Erstellung das Projektverzeichnis ein und erstellen Sie einen Spider:

cd deep_learning_papers
scrapy genspider arXiv_spider arxiv.org

Hier nennen wir den Spider „arXiv_spider“ und geben die Crawling-Website als arxiv an . Öffnen Sie nach der Erstellung die Datei arXiv_spider.py. Wir sehen den folgenden Code:

import scrapy


class ArxivSpiderSpider(scrapy.Spider):
    name = 'arXiv_spider'
    allowed_domains = ['arxiv.org']
    start_urls = ['http://arxiv.org/']

    def parse(self, response):
        pass

Dies ist die einfachste Spider-Vorlage. Wir müssen die Parse-Methode als Funktion schreiben, um Papierinformationen zu erfassen. Da die Papierinformationen über die API-Schnittstelle abgerufen werden, müssen wir eine GET-Anfrage senden. Wir können das Requests-Modul in Python verwenden, um Anfragen zu senden. Hier schreiben wir eine Funktion, die eine Anfrage sendet:

import requests

def get_papers_data(start, max_results):
    url = 'http://export.arxiv.org/api/query?search_query=all:deep+learning&start=' + str(start) + '&max_results=' + str(max_results)
    headers = {'Content-Type': 'application/json'}
    response = requests.get(url, headers=headers)
    return response.content

Die Funktion get_papers_data empfängt zwei Parameter, nämlich die Startposition und die maximale Anzahl. Wir übergeben „all:deep+learning“ an den Parameter search_query, damit wir alle Papierinformationen im Bereich Deep Learning erhalten können. Nachdem wir mithilfe von request eine GET-Anfrage gesendet haben, können wir die Daten von Response.content abrufen.

In der Parse-Methode analysieren wir die zurückgegebenen Daten. Wir können XPath-Ausdrücke verwenden, um Inhalte schnell abzurufen. Der spezifische Code lautet wie folgt:

  def parse(self, response):
        for i in range(0, 50000, 100):
            papers = get_papers_data(i, 100)
            xml = etree.XML(papers)

            for element in xml.iter():
                if element.tag == 'title':
                    title = element.text
                elif element.tag == 'name':
                    name = element.text
                elif element.tag == 'abstract':
                    abstract = element.text

                yield {'title': title, 'name': name, 'abstract': abstract}

Hier verwenden wir eine Schleifenoperation von bis zu 50.000 Malen, beginnend bei 0 und jedes Mal um 100 erhöhend, bis wir die Informationen aller Deep-Learning-Papiere erhalten. Dann verwenden wir etree.XML, um die erhaltenen Daten in das XML-Format zu analysieren und dann jedes Element einzeln zu lesen. Wenn das Tag des Elements „title“, „name“ oder „abstract“ lautet, weisen wir den Elementinhalt der entsprechenden Variablen zu und verwenden schließlich yield, um das Analyseergebnis zurückzugeben.

Abschließend müssen wir das Crawler-Programm starten:

scrapy crawl arXiv_spider -o deep_learning_papers.csv

Der Parameter „-o“ wird hier verwendet, um die Ausgabedatei anzugeben, die standardmäßig das JSON-Format verwendet. Hier wählen wir das CSV-Format und die Ausgabedatei heißt „deep_learning_papers.csv“.

Durch die Scrapy-Crawler-Technologie können wir problemlos Papierinformationen im Bereich Deep Learning erhalten. Durch die Kombination anderer Datenverarbeitungstechnologien können wir eine tiefergehende Forschung und Analyse dieser Daten durchführen und so die Entwicklung des Bereichs Deep Learning vorantreiben.

Das obige ist der detaillierte Inhalt vonVerwenden Sie den Scrapy-Crawler, um Papierdaten im Bereich Deep Learning zu erfassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn