Frage bezüglich Aufbau/Struktur von Script

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
SphaeroX
User
Beiträge: 4
Registriert: Montag 16. November 2015, 00:13

Hey, ich habe schon über all danach gesucht und wurde leider nicht fündig. Deshalb versuche ich es mal hier.

Folgendes will ich realisieren: ein Script das eine Webseite aufruft und anhand der Daten auf der Webseite Berechnungen vor nimmt und dann wiederum bestimmte Aktionen auf der Seite ausführt.

Doch welche Struktur sollte ich dabei verwenden um den Überblick nicht zu verlieren?

main.py - Hauptprogramm
site.py - Verbindet sich, ruft Seiten auf und extrahiert Daten
aktionen.py - bekommt Daten von site.py und wertet diese aus

Ist das richtig so?
Ich will mit Klassen arbeiten, also müsste ich aktionen.py ja von site.py erben lassen. Mir würde auch reichen wenn ihr irgendwelche Links habt bei denen auf die Thematik eingegangen wird.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Willkommen im Forum und zu Python!

Ich nehme mal an du kommst von Java, denn das macht alles im Pythonkontext keinen Sinn.

Ein Modul entspricht keiner Klasse und damit kann ein Modul auch nicht von anderen Erben.

Zu deinem konkreten Problem: Ich sehe da kein Problem warum das nicht alles in einem Modul stehen koennte. "aktionen" muss auch nicht von "site" erben, denn du schreibst ja schon dass du die Daten uebergeben willst. Eine Aktion ist auch keine Website also macht so eine Vererbung auch semantisch keinen Sinn (Vererbung ist eine "ist-ein" Beziehung, ein "Opel Astra" ist ein "Auto" etc.).

Zu guter Letzt: Du *willst* nicht mit Klassen arbeiten. Klassen sind ein Sprachmittel mit dem man bestimmte Probleme gut loesen kann, aber von vorneherein zu sagen "Ich benutze einfach immer eine Klasse" funktioniert nicht.
Benutzeravatar
noisefloor
User
Beiträge: 3882
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Folgendes will ich realisieren: ein Script das eine Webseite aufruft und anhand der Daten auf der Webseite Berechnungen vor nimmt und dann wiederum bestimmte Aktionen auf der Seite ausführt.

Doch welche Struktur sollte ich dabei verwenden um den Überblick nicht zu verlieren?
Die Frage ist auch ein bisschen pauschal - "Berechnungen" oder "Aktionen" kann ja auch nur eine Zeile Code sein...

Hast du mal ein konkretes Beispiel?

Gruß, noisefloor
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

SphaeroX
User
Beiträge: 4
Registriert: Montag 16. November 2015, 00:13

ich hätte halt gerne die Aktionen mit urllib2 gertrennt von den Aktionen mit regex die den html auslesen und als dritte Komponente den logischen Code.

Mal ein ganz grobes Beispiel:

site=Seitenklasse
parser=Parserklasse

site(user,pass) # meldet sich an und ruft daten vom ucp ab
ucpData = parser.getUcp(site.ucpSource) # daten in eine dictionarie mit regex

if ucpData.user = "test:
pass

Aber wie gesagt wenn ihr irgendwelche Links kennt wo darauf mehr eingegangen wird, dann hilft mir das schon da ich mich einfach rein lese. Bei der Literatur die ich hatte wurde darauf halt leider nicht eingegangenen. Vielen dank schon mal für die Antworten.
BlackJack

@SphaeroX: Du machst Dir zu viele Gedanken und ich habe auch das Gefühl zu hast jetzt schon Klassen im Kopf ohne zu wissen ob die wirklich Sinn machen. Das soll nicht heissen das am Ende nicht hier und da sinnvoll Klassen eingesetzt werden können, aber Python ist nicht klassenfixiert wie beispielsweise Java wo man Klassen schreiben muss, auch wenn man gar keine Klassen schreibt sondern nur Funktionen gezwungenermassen syntaktisch in eine Klasse pressen muss. Und die Datei ist nicht gleichbedeutend mit einer Klasse, das heisst die Datei ist als Modul dazu da *mehrere* Funktionen und Klassen zu einer Einheit zusammenzufassen.

Fang doch einfach erst einmal mit einem Modul an. Wenn das dann tatsächlich anfängt zu gross zu werden kann man das immer noch problemlos in ein Package umwandeln und die Funktionen und vielleicht auch Klassen auf zwei oder mehr Module in dem Package aufteilen.

Package ist auf jeden Fall ein wichtiges Stichwort wenn man etwas schreibt das aus mehr als einem Modul besteht.
Sirius3
User
Beiträge: 17844
Registriert: Sonntag 21. Oktober 2012, 17:20

@SphaeroX: Aus Deinem Beispiel wird mir nur einiges unklarer. Was bedeutet die Abkürzung ucp? Was sind Aktionen mit urllib2 oder regex?
BlackJack

@SphaeroX: Ach so und *wirklich* wichtig: HTML nicht mit regulären Ausdrücken verarbeiten sondern eine passende Parserbibliothek verwenden. `lxml.html` oder BeautifulSoup beispielsweise.

Statt `urllib`/`urllib2` würde ich das `requests`-Package für den HTTP-Teil verwenden. Eine wesentlich angenehmere API und die gleiche für Python 2 und 3.
Antworten