ubuntuusers.de

wget durch echo ersetzen

Status: Ungelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

jokerGermany

Anmeldungsdatum:
11. Mai 2008

Beiträge: 1004

Da ich die Webseite nicht mit DDOS Attacken beschießen will möchte ich gerne das wget vorher in eine Variable einlesen.

Das hat bisher auch gut funktioniert außer hier:

Website=$(wget 'http://geizhals.de/amd-a10-5800k-black-edition-ad580kwohjbox-a805214.html?bl1_id=-1&t=v&plz=&vl=de&v=e&va=b#filterform' -O - | tr -d "\n" | grep -Po "(?<=<nobr>Bl&auml;ttern:).*?(?=Alle Angaben ohne Gew)")
IFS=$'\n'
Firmen=($(echo $Website | tr -d "\n" | grep -Po "(?<=><br><small><b>).*?(?=</b></small></a>)"))
n=2
IFS=">"
ewertungen=($(wget 'http://geizhals.de/amd-a10-5800k-black-edition-ad580kwohjbox-a805214.html?bl1_id=-1&t=v&plz=&vl=de&v=e&va=b#filterform' -O - | grep -Po "(?<=><br><small><b>"${Firmen[n]}").*?(?=Bewertungen)"))

Das wollte ich eigentlich hierdurch ersetzen:

1
2
3
4
5
6
Website=$(wget 'http://geizhals.de/amd-a10-5800k-black-edition-ad580kwohjbox-a805214.html?bl1_id=-1&t=v&plz=&vl=de&v=e&va=b#filterform' -O - | tr -d "\n" | grep -Po "(?<=<nobr>Bl&auml;ttern:).*?(?=Alle Angaben ohne Gew)")
IFS=$'\n'
Firmen=($(echo $Website | tr -d "\n" | grep -Po "(?<=><br><small><b>).*?(?=</b></small></a>)"))
n=2
IFS=">"
Bewertungen=($(echo $Website | grep -Po "(?<=><br><small><b>"${Firmen[n]}").*?(?=Bewertungen)"))

kann mir jemand verraten warum das Bewertungen mit echo $Website nicht mehr funktioniert?

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Meine Güte, jetzt haust Du einem schon wieder solche Berge von wüstem Code um die Ohren, und man darf daraus erraten was Du eigentlich willst ... anstatt dass Du mal in normalen, freundlichen Worten verrätst, was Du eigentlich vorhast.

Und wieder hast Du die Process Substitution nicht "gequotet", in der 1. Zeile, genau wie in Deinem vorigen Strang ! - (Habe ich da denn völlig vor die Wand geredet ???)

Und auch das nochmal: solche Tag-orientierten Sachen wie HTML mit zeilenorientierten Tools wie grep und sed zu bearbeiten ist nicht wirklich eine gute Idee.

Viel sinnvoller wäre es, gleich im 1. Schritt die Website Tag-orientiert in einzelne Abschnitte zu zerlegen, einen für jede Firma, die in ein Array zu speichern und dann damit weiter zu arbeiten.
Alles andere ist Bastelkram, weil es die (bereits vorhandene !) Struktur überhaupt nicht richtig nutzt.

track

jokerGermany

(Themenstarter)

Anmeldungsdatum:
11. Mai 2008

Beiträge: 1004

Sry, aber ich verstehe nur Bahnhof.

wie lese ich denn Tag basiert aus? Konnte zu HTML-XML-Utils nichts finden. Nicht wie man sie anwendet oder sonstwas. Selbst ein man-Eintrag hab ich nicht gefunden.

Was ich vorhabe:

Hersteller und Preise auslesen. Ist der Hersteller in der List der "guten" Hersteller ist das ok, ist er es nicht wird auf die Bewertungen geschaut und dann diese inklusive Note mit einbezogen.

Am Ende soll das Script sich dann für einen günstigsten aktzeptablen Hersteller entscheiden und dann den User Fragen ob dieser ok ist.

Das ist erstmal mein Grundversuch.

Die Basis habe ich dafür auch schon, aber irgendwie finde ich es extrem doof geizhals mit ddos zu beschiesen und wollte deswegen erstmal den "brauchbaren" Teil in eine Variable auslagern.

1
Website=$(wget 'http://geizhals.de/amd-a10-5800k-black-edition-ad580kwohjbox-a805214.html?bl1_id=-1&t=v&plz=&vl=de&v=e&va=b#filterform' -O - | tr -d "\n" | grep -Po "(?<=<nobr>Bl&auml;ttern:).*?(?=Alle Angaben ohne Gew)")

Dieser soll dann von den anderen weiterbearbeitet werden. Klappt bei allen außer Bewertungen...

1
./test2.sh: line 36: Bewertungen: bad array subscript

kizu

Avatar von kizu

Anmeldungsdatum:
31. Juli 2009

Beiträge: 677

Wohnort: Buchholz

Hallo jokerGermany,

jokerGermany schrieb:

Was ich vorhabe:

Hersteller und Preise auslesen. [...] Am Ende soll das Script sich dann für einen günstigsten aktzeptablen Hersteller entscheiden und dann den User Fragen ob dieser ok ist.

Und auf Was willst du am Ende hinaus? Soll das ganze dann auf einer Webseite angezeigt, in einer Datenbank gespeichert, irgendwo weiterverarbeitet oder einfach nur auf dem Bildschirm ausgegeben werden?

Hast das ganze einen tieferen Sinn oder einfach nur ein Hobby-Script-Projekt um das Scripten kennen zu lernen?

jokerGermany

(Themenstarter)

Anmeldungsdatum:
11. Mai 2008

Beiträge: 1004

Da bin ich mir nicht sicher was möglich ist.

Am liebste wäre es, wenn es die vorgegebenen Seiten aus einer Zelle in LibreOffice Calc ausliest und dann in eine andere Zelle nachher nach vorheriger Nachfrage einfügt.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Möglich ist das sicherlich, aaaaaber ...

wenn Du schon den wiederholten Hinweis, dass Du mal bittesehr konsequent "quoten" sollst, einfach locker überliest, und bisher auch Deine Problemstellung nicht in "Prosa" beschreiben konntest ... wie willst Du dann solch ein komplexes Projekt schaffen ?

Allein schon der Zugriff auf die OOo-Tabelle erfordert entpacken, auslesen und wieder eintragen der XML-Daten per xmlstarlet o.ä. (ja: hier gibt es wirklich keine Alternative mehr zu solch einem Tool !) und neues Packen der .ods- Datei.

Du müsstest Dich auf jeden Fall vorher in die betreffenden Themen einlesen, und Du solltest die Dir gegebenen Hinweise auch mal ernst nehmen.

Das beste wäre, wenn Du Deine Überlegungen tatsächlich vorher mal in klaren Worten für Dich selbst (und ggf. auch hier) beschreibst, damit die Gedankengänge deutlich werden. Sozusagen ein "Technisches Pflichtenheft". Sonst wird das ein bodenlos mühsames Unterfangen.

LG,

track

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13204

jokerGermany schrieb:

Am liebste wäre es, wenn es die vorgegebenen Seiten aus einer Zelle in LibreOffice Calc ausliest und dann in eine andere Zelle nachher nach vorheriger Nachfrage einfügt.

Du willst also eine Tabelle von URL und Seiteninhalt haben, die aktualisiert werden kann? Ist das Dein Ziel?

Ciao

robert

Antworten |