website downloaden.

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Iamaprogrammer
User
Beiträge: 1
Registriert: Freitag 24. Februar 2017, 13:35

Hallo

ich will ein programm das mir die website von spiegel.de automatisch komplet downloaded also alle neuen Artikel und so weiter. Aktuell habe ich ein Programm was eine website downloaded und sie speichert. Wie kann ich es machen das es automatisch immer wenn ein neuer artikel da ist ihn downloaded?

Die ist mein aktueller code

Code: Alles auswählen

from urllib.request import urlopen
html = urlopen("http://www.spiegel.de").read().decode('utf-8')



filemanager = open('test.html',mode='w')

filemanager.write(html)
Hoffe der Code ist zugeprauchen und nicht komplett Müll.

Schon mal danke im vorraus.

Oder könnt ihr mir dazu ein tutorial empfehlen?

Grüße

p.s. hoffe das es im richtigen thread ist
Zuletzt geändert von Anonymous am Freitag 24. Februar 2017, 19:47, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Benutzeravatar
Cronut
User
Beiträge: 34
Registriert: Sonntag 5. Februar 2017, 09:50
Wohnort: HRO, GER

Naja du rufst die Seite in regelmäßigen Intervallen auf und gleichst die Artikel mit deiner Datenbank ab, bzw. ob halt seit dem letzten Zeitpunkt des Aufrufs neue Artikel hinzugekommen sind.
Da musst du die Artikel halt von der Seite extrahieren oder du nutzt RSS.
“Clean code always looks like it was written by someone who cares.” (Michael Feathers)
Check out: https://awesome-python.com/
Benutzeravatar
pixewakb
User
Beiträge: 1407
Registriert: Sonntag 24. April 2011, 19:43

Du brauchst requests und BeautifulSoup, damit ist das ganz einfach zu machen, wenn man sich mal eingearbeitet hat.

[1] http://docs.python-requests.org/en/master/

[2] https://www.crummy.com/software/BeautifulSoup/

Ich mach einfach mal einen Anfang:

Code: Alles auswählen

import requests
from bs4 import BeautifulSoup

url = "http://www.spiegel.de/"

webpage = requests.get(url).text
soup = BeautifulSoup(webpage, "html5lib")

# Headlines
# <span class="headline">Trump-Regierung schließt zahlreiche Medien von Pressekonferenz aus</span>
headlines = soup.find_all("span", attrs={"class":"headline"})

for i, headline in enumerate(headlines):
    print("{:3d}. {}".format(i+1, headline.text))
Das löst nicht (!) dein Problem, zeigt aber einen möglichen Weg auf. Ich hole mir die Seite mit dem requests-Modul und werte dann die Seite als <soup> aus. I. d. R. wirst Du Unterseiten usw. usf. nachladen müssen.

Es gibt m. E. inzwischen neuere Module, aber ich komme mit requests und bs4 super hin. selenium sollte man erwähnen, ist aber nur etwas für Seiten, die viel js einsetzen. Nutze ich nicht. Dem Namen nach kenne ich noch https://scrapy.org/, nutze ich aber auch nicht. Falls jemand mit scrapy Erfahrung hat, könnte er sich ja hier mal melden.
Antworten