[PYTHON] Sammle Anison-Texte mit Scrapy

Einführung

Ich habe ein Gerücht gehört, dass eine Python-Bibliothek namens Scrapy einfach und benutzerfreundlich ist, deshalb habe ich sofort versucht, sie zu verwenden.

Umgebung

Stabiles Pyenv + Anakonda (Python3)

Gesammelte Daten

Lassen Sie die Texte von Anime-Songs hier? Von den Anime-Songs, die zwischen dem 31. Juli und dem 30. November auf der Seite Neueste zusätzliche Songs hier hinzugefügt wurden Ich beschloss, die Texte zu sammeln.

Erstellungsverfahren

Installation

Es kann von pip installiert werden.``` $ pip install scrapy


## Projekterstellung
Sie können den Namen frei bestimmen. Dieses Mal wird der Name des Tutorials unverändert übernommen.```
$ scrapy startproject aipa_commander

Überprüfen Sie den Inhalt

Ich bin zu neu im Scraping und habe keine Ahnung, was der Inhalt der Datei bedeutet. Berühren Sie es vorerst nicht, bis es in gewissem Umfang verwendet werden kann.

Programmerstellung

Das einzige Verzeichnis, das von Anfängern wie mir betrieben wird aipa_commander (Vorname des Projekts) / spiders / Erstellen Sie hier eine Python-Skriptdatei. Als Ergebnis der Codierung durch verschiedene Versuche und Fehler war das Endergebnis so.

get_kashi.py


# -*- coding: utf-8 -*-

import scrapy

class KashiSpider(scrapy.Spider):
    name = 'kashi'

    start_urls = ['http://www.jtw.zaq.ne.jp/animesong/tuika.html']

    custom_settings = {
        "DOWNLOAD_DELAY": 1,
    }

    def parse(self, response):
        for href in response.xpath('//td[2]/a/@href'):
            full_url = response.urljoin(href.extract())
            yield scrapy.Request(full_url, callback=self.parse_item)

    def parse_item(self, response):
        kashi = response.xpath('//pre/text()').extract()
        kashi = kashi[0].split('\n')
        file = open('./Text/{}.txt'.format(kashi[0]), 'w')
        for j in range(len(kashi)):
            file.write(kashi[j]+'\n')
        file.close()

Scrapy ist unglaublich, weil Sie die Texte von 200 Songs auf einmal in nur wenigen Zeilen erhalten können.

Ich habe es mit Bezug auf den Code in Official Tutorial gemacht, daher habe ich nicht viele Erklärungen zum Code ... ・ Es fiel mir jedoch am schwersten, weil ich keine HTML- und CSS-Kenntnisse hatte.

response.xpath('//td[2]/a/@href')Und Antwort.xpath('//pre/text()').extract()


 Angeben von xpath wie z.

 Eine solche Funktion wie ein Retter wurde jedoch für mich vorbereitet.
```$scrapy shell "url"```
 Wenn Du eintrittst
 Shell startet

#### **`>>>sel.xpath('//td[2]/a/@href')`**

Und Renn

[<Selector xpath='//td[2]/a/@href' data='ku/qualidea/brave.html'>,


 <Selector xpath='//td[2]/a/@href' data='ku/qualidea/axxxis.html'>,
 <Selector xpath='//td[2]/a/@href' data='ku/qualidea/gravity.html'>,
 <Selector xpath='//td[2]/a/@href' data='ku/qualidea/yakusoku.html'>,
 <Selector xpath='//td[2]/a/@href' data='ku/qualidea/clever.html'>,
 <Selector xpath='//td[2]/a/@href' data='to/drefes/pleasure.html'>,
・ ・ ・ Unten weggelassen

Das Ergebnis kann auf diese Weise leicht bestätigt werden. Mit Shell können Sie ganz einfach versuchen, die gewünschten Daten abzurufen, ohne das Skript neu schreiben zu müssen. Dies ist sehr praktisch, daher wurde es definitiv von Anfängern beim Schaben verwendet.

Ich werde über die Beschreibungsmethode schreiben, wenn ich xpath spezifiziere, wenn es eine Gelegenheit gibt, Ich habe diese Zeit genutzt xpath(//td[2]/a/@href) Ruft nur httpl: // www ~ in `<a>` in allen `` <td [2]> `ab.

xpath('//pre/text()').extract()


 Ruft nur den Textteil in allen `` `<pre>` `ab.
 Es ist ein Prozess namens.

# Ausführungsergebnis

$ scrapy crawl kashi

 Und ausführen (der Kashi-Teil ist das im Namen angegebene Schlüsselwort)
 Es wurden 200 Textdateien wie diese generiert.
 ![スクリーンショット 2016-12-14 0.20.23.png](https://qiita-image-store.s3.amazonaws.com/0/125193/b660612a-0d67-1311-5238-ecb093b06b15.png)

 Der Inhalt der Textdatei
 So (weil es lang ist, ein Teil davon)
 ![スクリーンショット 2016-12-14 0.23.52.png](https://qiita-image-store.s3.amazonaws.com/0/125193/053df284-92ce-a9fa-9c99-e3c6d0020d97.png)

# abschließend
 Ich war beeindruckt, weil es einfacher war, als ich es mir vorgestellt hatte, zu sammeln.
 Nächstes Mal möchte ich es mit Bildern versuchen.


Recommended Posts

Sammle Anison-Texte mit Scrapy
Starten Sie mit Scrapy neu
[Sprachanalyse] Sammeln Sie Vogellieddaten mit Xeno-Canto
Sammeln Sie Informationen zu Längen- und Breitengraden des Speichers mit Scrapy + Splash ②
Sammeln Sie Informationen zu Breiten- und Längengraden des Speichers mit Scrapy + Splash ①
Schaben mit kratzender Schale
Probleme bei der Installation von Scrapy
Festliches Scraping mit Python, Scrapy
Einfaches Web-Scraping mit Scrapy
Anime-Gesichtserkennung mit OpenCV