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.
Stabiles Pyenv + Anakonda (Python3)
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.
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
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.
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