Autor Thema: Produktbewertungen mit Excel-Auswertung  (Gelesen 5418 mal)

Thallion

  • Sr. Member
  • ****
  • Beiträge: 250
    • Profil anzeigen
Produktbewertungen mit Excel-Auswertung
« am: 29 Jul 2014, 10:18:39 »
Hi SpliMos,

vielleicht kennt mich ja einer aus dem DSA4-Forum.
Dort werte ich schon seit Jahren die Bewertungs-Umfragen zu DSA-Produkten aus.

Siehe hier z.B.

Wenn gewünscht, würde ich das auch gerne für die Splittermond-Bewertungen machen.
Leider kann ich per Excel-Web-Abfrage die Umfrage-Ergebnisse nicht separat downloaden.
Diese werden nicht als Tabelle erkannt.

Hat jemand vielleicht eine Lösung?
Wollt ihr überhaupt einen Thread mit Auswertungen?
Soll es in Zukunft bei der Schulnotenvergabe bleiben?

beste Grüße
Thallion

Quendan

  • Gast
Re: Produktbewertungen mit Excel-Auswertung
« Antwort #1 am: 29 Jul 2014, 10:36:44 »
Ich fände sowas durchaus schön - habe aber von der Technik keine Ahnung und weiß nicht, warum das dort runterladbar ist und hier nicht. ;) Wenn man dafür aber nur in den Einstellungen irgendwas ändern muss, kann ich das (mit Anleitung) gerne machen.

@Schulnotenvergabe: Bisher gab es da ja keine einheitliche Planung, sondern die Threads wurden einfach eröffnet. Ich wüsste aber nicht, was dagegen spricht.

Irian

  • Beta-Tester
  • Hero Member
  • ***
  • Beiträge: 574
    • Profil anzeigen
Re: Produktbewertungen mit Excel-Auswertung
« Antwort #2 am: 31 Jul 2014, 11:23:37 »
Leider kann ich per Excel-Web-Abfrage die Umfrage-Ergebnisse nicht separat downloaden.
Diese werden nicht als Tabelle erkannt.

Hat jemand vielleicht eine Lösung?
Wollt ihr überhaupt einen Thread mit Auswertungen?
Soll es in Zukunft bei der Schulnotenvergabe bleiben?
Musst du dich noch immer mit meiner alten Excel-Datei für die DSA4-Abenteuerauswertungen herumärgern, Thallion? Du Ärmster! ;)

Eine gute Lösung fürs Splittermond-Forum habe ich leider nicht. Du könntest aber theoretisch statt eine Tabelle zu importieren die gesamt Webseite des Fadens in Excel laden, d.h. einfach keine Tabelle auswählen und im Faden Importieren anklicken. Beim Ziel dann ein neues Arbeitsblatt auswählen und es werden dann einfach alle Daten eingelesen.

In einem Berechnungstabellenblatt könnte man die Infos dann verarbeiten - die Felder müssten theoretische bei jeder Abfrage an der gleichen Stelle sein.

Aber insgesamt dürfte das noch deutlich aufwendiger sein als bei DSA4...

JR

Thallion

  • Sr. Member
  • ****
  • Beiträge: 250
    • Profil anzeigen
Re: Produktbewertungen mit Excel-Auswertung
« Antwort #3 am: 31 Jul 2014, 15:35:22 »
Jupp, schlag mich immer noch mit deiner Datei rum.   ;)
Ist dank Web-Abfrage ja auch nicht so wahnsinnig aufwendig.

Den ganzen Faden zu laden klappt natürlich.
Hatte ich auch schon getestet.
Daraus dann aber eine sich selbst automatisierende Abfrage zu machen,
die man danach nicht mehr separat jedes mal anpacken muss, ist mir noch nicht geglückt.
Je Abfrage eine Tabelle mit sämtlichen Faden-Downloads erscheint mir supoptimal.

Gruß
Thallion

Thallion

  • Sr. Member
  • ****
  • Beiträge: 250
    • Profil anzeigen
Re: Produktbewertungen mit Excel-Auswertung
« Antwort #4 am: 01 Aug 2014, 10:30:40 »
Hab mal die DSA4-Datei hochgeladen, falls sich mal jemand daran versuchen will das für Splittermond hinzukriegen.

Gruß
Thallion

4 Port USB Hub

  • Hero Member
  • *****
  • Beiträge: 1.047
  • Jetzt mit USB 3.0 Ports
    • Profil anzeigen
Re: Produktbewertungen mit Excel-Auswertung
« Antwort #5 am: 01 Aug 2014, 11:22:13 »
Ich hätte das in python so gemacht (Excel geht ja mal garnicht):
import urllib.request
from bs4 import BeautifulSoup
from collections import namedtuple
from operator import attrgetter

Produkt = namedtuple('Produkt','name id url Stimmen Durchschnitt')
Produkte = []
baseurl = "http://forum.splittermond.de/index.php?topic=%d.0"
bewertungsthreads = [1676,1418,2003]

def newrow(td):
    return '[tr][td]' + str(td)

def newcell(row,td):
    return row + '[/td][td]' + str(td)

def endrow(row):
    return row + '[/td][/tr]\r\n'

def bbcode(tag, string, value = None):
    if value:
        return'['+tag+'='+value+']'+string+'[/'+tag+']'
    else:       
        return'['+tag+']'+string+'[/'+tag+']'

def bbcodeurl(urlstring,urlname):
    return bbcode('url',urlname, urlstring)
    #return '[url='+urlstring+']'+urlname+'[/url]'

def bbbold(text):
    return bbcode(tag='b', string = text)

def bbtt(text):
    return bbcode(tag='tt', string = text)

def createrow(field1, field2, field3, field4):
    tablerow = newrow(field1)
    tablerow = newcell(tablerow,field2)
    tablerow = newcell(tablerow,field3)
    tablerow = newcell(tablerow,field4)
    tablerow = endrow(tablerow)
    return tablerow

for threadid in bewertungsthreads:
    url=baseurl % threadid
    page=urllib.request.urlopen(url)
    soup = BeautifulSoup(page.read())
    Produktname = soup.find('title').string.split('/')[0].strip()
    polls = soup.find('dl',{'class':'options'})
    options = polls.findAll('dt',{'class':'middletext'})
    votes = polls.findAll('span',{'class':'percentage'})
    ergebnis = dict(zip([[int(s) for s in option.string.split() if s.isdigit()][0] for option in options], [int(vote.string.split(' ')[0]) for vote in votes]))
    try:
        average = str(round(sum(k*v for k,v in ergebnis.items()) / sum(v for k,v in ergebnis.items()),2))
    except ValueError:
        average = 'No votes yet'
    Produkte.append(Produkt(Produktname, threadid, url, str(sum(v for k,v in ergebnis.items())), average))

table = '[table]\r\n'

header = createrow(bbbold('Platz')+bbtt('   '),bbbold('Bewertung ')+bbtt('   '),bbbold('Stimmen ')+bbtt('   '),bbbold('Produkt')+bbtt('   '))
table += header
for index, element in enumerate(sorted(Produkte, key=attrgetter('Durchschnitt'))):
    row = createrow(index+1,element.Durchschnitt,element.Stimmen,bbcodeurl(element.url,element.name))
    table += row
   
table += '[/table]'
print(table)
   

Output:
Platz   Bewertung    Stimmen    Produkt   
11.5558Grundregelwerk
21.69110Weltenband
32.01Der Fluch der Hexenkönigin

Wenn sich dann bei den Schulnotenvergabethreads alle an ein einheitliches Format gewöhnen, wäre es noch besser ;)
« Letzte Änderung: 01 Aug 2014, 12:36:17 von 4 Port USB Hub »
Für Fetzenstein! Nieder mit Knax!

Thallion

  • Sr. Member
  • ****
  • Beiträge: 250
    • Profil anzeigen
Re: Produktbewertungen mit Excel-Auswertung
« Antwort #6 am: 01 Aug 2014, 12:39:57 »
Das bedeutet du übernimmst das auch für die Zukunft?  ;D

Kann mit Python nix anfangen.

Sieht aber gut aus, was du da gezaubert hast.

Gruß
Thallion

4 Port USB Hub

  • Hero Member
  • *****
  • Beiträge: 1.047
  • Jetzt mit USB 3.0 Ports
    • Profil anzeigen
Re: Produktbewertungen mit Excel-Auswertung
« Antwort #7 am: 01 Aug 2014, 12:42:53 »
Kann ich machen!
Wenn das Format einheitlich bleibt ist es ja kein Aufwand. Bis wir 500 Splittermond-Produkte haben, dauert es wohl noch eine Weile. ;)
Für Fetzenstein! Nieder mit Knax!

rillenmanni

  • Autor
  • Hero Member
  • *****
  • Beiträge: 769
  • König der Narren
    • Profil anzeigen
    • Metstübchen
Re: Produktbewertungen mit Excel-Auswertung
« Antwort #8 am: 01 Aug 2014, 13:13:59 »
Vielen Dank an Thallion und den USB Hub!

USBle, bist Du Dir wirklich sicher, was Du Dir da gerade ans Bein gebunden hast? :)
Während die Opfer sich umkrempeln und der Professor nicht zu erreichen ist, reißt Rillen-Manni voller Wut eine Waffe an sich ...

4 Port USB Hub

  • Hero Member
  • *****
  • Beiträge: 1.047
  • Jetzt mit USB 3.0 Ports
    • Profil anzeigen
Re: Produktbewertungen mit Excel-Auswertung
« Antwort #9 am: 01 Aug 2014, 15:05:57 »
ein-zwei mal pro Monat eine neue ID in die Liste der Threads einzufügen und CTRL+F11, CTRL+C, CTRL+V zu drücken ist jetzt nicht so wild. ;)
Für Fetzenstein! Nieder mit Knax!

rillenmanni

  • Autor
  • Hero Member
  • *****
  • Beiträge: 769
  • König der Narren
    • Profil anzeigen
    • Metstübchen
Re: Produktbewertungen mit Excel-Auswertung
« Antwort #10 am: 01 Aug 2014, 15:11:27 »
ein-zwei mal pro Monat eine neue ID in die Liste der Threads einzufügen und CTRL+F11, CTRL+C, CTRL+V zu drücken ist jetzt nicht so wild. ;)
Ungefähr so etwas mag sich auch Alex der Große gedacht haben, als er einst den Plan ersann, die Welt zu erobern. :) Ich werde Dich in 12 Jahren noch einmal darauf ansprechen. :)
Während die Opfer sich umkrempeln und der Professor nicht zu erreichen ist, reißt Rillen-Manni voller Wut eine Waffe an sich ...

Irian

  • Beta-Tester
  • Hero Member
  • ***
  • Beiträge: 574
    • Profil anzeigen
Re: Produktbewertungen mit Excel-Auswertung
« Antwort #11 am: 01 Aug 2014, 22:21:19 »
Das hatte ich mir auch mal gedacht. Andererseits hatte ich auch keine wirklich guten Tools ;-)