Web Scraping Rap-lyrics auf Rap Genius w/ Python
Ich bin etwas von einem coding-Anfänger, und ich habe versucht zu kratzen, Andre 3000 die lyrics aus Rap genius, http://genius.com/artists/Andre-3000, durch die Verwendung von Schönen Suppe (Eine Python-Bibliothek für das abrufen von Daten aus HTML-und XML-Dateien). Mein Ziel ist es, die Daten in einem string-format. Hier ist was ich habe, so weit:
from bs4 import BeautifulSoup
from urllib2 import urlopen
artist_url = "http://rapgenius.com/artists/Andre-3000"
def get_song_links(url):
html = urlopen(url).read()
# print html
soup = BeautifulSoup(html, "lxml")
container = soup.find("div", "container")
song_links = [BASE_URL + dd.a["href"] for dd in container.findAll("dd")]
print song_links
get_song_links(artist_url)
for link in soup.find_all('a'):
print(link.get('href'))
Also ich brauche Hilfe mit dem rest des Codes. Wie bekomme ich seine Texte in string-format? und dann, wie verwende ich das Natural Language Toolkit (NLTK) zu token, Sätze und Wörter.
- dies ist eine wunderbare Idee. Du gehst zu generieren, neue Texte Recht? Ich überlege, das gleiche zu tun für Tupac. Muss es ein tool gibt, generieren Ihre Stimmen, basierend auf Ihren vorhandenen songs. Ich meine, wenn es am Wort-Ebene werden dann alle neu generierten Texte enthalten Worte, die gesungen worden, bevor Sie von der Künstlerin so wäre es eine Frage der Probenahme und Verzerrung der Schallwellen, um die erzeugte Stimme zu klingen, wie Sie wollen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein Beispiel, wie Sie greifen alle das Lied links auf der Seite, Folgen Sie Ihnen und Sie bekommen die Texte zu den Songs:
Beachten Sie, dass
Anfragen
Modul hier verwendet wird. Beachten Sie auch, dassUser-Agent
- header ist erforderlich, da die Seite zurück403 - Forbidden
ohne es.beautifulsoup4
: laufenpip install beautifulsoup4
.Ersten, für jeden link, den Sie herunterladen müssen, die Seite und analysiert mit BeautifulSoup. Dann schauen Sie, für ein auszeichnendes Attribut, dass die Seite trennt, die Texte von anderen Inhalten der Seite. Ich fand <a data-editorial-state="angenommen" Daten-Klassifikation="angenommen" data-group="0"> um nützlich zu sein. Führen Sie dann ein .find_all auf der lyrics-Seite, die Inhalte, um alle lyrischen Linien. Für jede Zeile, die Sie anrufen können .get_text() auf, um den text aus jeder lyrics Zeile.
Als für NLTK, sobald es installiert ist, können Sie es importieren und analysieren Sätze wie:
Dies wird Ihnen eine Liste aller Wörter, in jedem Satz.
GitHub /jashanj0tsingh /LyricsScraper.py bietet grundlegende Schaben von Texten aus genius.com in eine text-Datei, wo jede Zeile steht für ein Lied. Es nimmt den Namen des Künstlers als Eingabe. Die erzeugte text-Datei, dann kann leicht gefüttert werden, um Ihre benutzerdefinierten
nltk
oder der Allgemeine parser, um Dinge zu tun, die Sie wollen.Den code ist unten:
Hoffe, das ist noch relevant! Ich mache die gleiche Sache mit Eminem ' s lyrics, aber von lyrics.com. Muss es sein, von Rap Genius? Ich fand lyrics.com um es einfacher zu kratzen.
Bekommen Andre 3000 ist nur ändern Sie den code entsprechend.
Hier ist mein code; es wird song-links und dann kratzt Sie diese Seiten, um Text und fügt die Texte einer Liste:
Dadurch erhalten Sie die Texte in einer Liste an. Zum drucken aller Titel:
Zu bekommen ein bestimmtes Lied:
Für die tokenisierung der song, Stecker, Wert (
120
) in:Selbst wenn Sie kratzen, die Website, bedeutet nicht, dass Sie sollten, stattdessen können Sie die API von genius , gerade das access-token aus der Genius-API-Website