Crawling mit Hindernissen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
LuniCo
User
Beiträge: 3
Registriert: Donnerstag 27. September 2018, 08:57

Hallo Schwarmintelligenz.

Ich arbeite zur Zeit an folgendem Projekt - Ich möchte die Textinhalte einer Plattform crawlen.
Die Seite ist azlyrics.com.
Ziel ist es, alle Texte aller Alben der Band The Rolling Stones in Listen zu speichern und per Graph darzustellen, wie häufig ein Wort in diesem Album vorkommt.
Leider funktioniert der Seitenwechsel und die Speicherung in Listen nicht, wie ich mir das vorstelle.

Hier meine bisherigen Ergebnisse:
Ich habe meine Anmerkungen drin gelassen. Möglicherweise hilft das beim Verstehen.

import requests
from bs4 import BeautifulSoup
import re
import time
from nltk.corpus import stopwords
from string import punctuation
from nltk import FreqDist
r = requests.get('https://www.azlyrics.com/lyrics/rolling ... 6.html')
#r1= requests.get('https://www.azlyrics.com/lyrics/rolling ... u.html')
doc = BeautifulSoup(r.text, "html.parser")
#doc1= BeautifulSoup(r1.text, "html.parser")
print(doc.title.text)
div_tags =doc.find('div', attrs={'class':'col-xs-12 col-lg-8 text-center'})
lyrics= div_tags.find('div', attrs={'class':None})
print(lyrics.text)
r1 = requests.get('https://www.azlyrics.com/r/rollingstones.html')
doc1 = BeautifulSoup(r1.text, "html.parser")
for song in doc1.findAll('div', attrs={'id':'listAlbum'}):
print(song.text)

#Seitenwechsel
album=doc.find('div', attrs={'id':'listAlbum'})
for link in album.find_all('a'):
# link.replace("..",'https://www.azlyrics.com')
a = link.get('href')
# for b in a:
#b = a.replace("..",'https://www.azlyrics.com')
print(a)

(P.S.: Sorry, wenn ich hier vielleicht im Vergleich zu anderen Beiträgen zu den Basics downgrade, aber ich komme einfach nicht weiter.)


VIELEN DANK IM VORAUS!!!!!
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Bitte nochmal deinen Quelltext posten, und diesmal mit den im Vollstaendigen Editor angebotenen Code-Tags, damit er auch lesbar ist. Bei Python sind Einrueckungen wichtig, und die gehen sonst verloren.

Und "funktioniert nicht wie ich mir vorstelle" ist keine wirklich aussagekraeftige Problembeschreibung. Ich stelle mir gerade vor, ein Alien-UFO fliegt vors Fenster und nimmt mich auf eine Space-Koks-Party nach Beteigeuze mit. Die Vorstellungskraft ist also recht unbegrenzt. Da kann man dann nicht so viel zu sagen. Du musst schon erzaehlen, was du konkret erwartest, und was nicht passiert oder stattdessen, und wenn du eine Fehlermeldung hast, bitte auch die in code-tags posten.
Antworten