Ok, Problem ist gelöst.
Beiträge von Bit-Service
-
-
sorry, das wusste ich nicht. domain ist amazon.de
erstes Suchergebnis-> Foto in großer Größe wie beschrieben speichern. Würde auch noch die anderen Fotos nehmen wenns nicht viel Arbeit ist (je mit -1.jpg, -2.jpg, etc) aber das erste ist erstmal am wichtigsten
-
Ok, wäre mir recht, aber leider sind meine Kenntnisse sehr beschränkt, sonst würde ich es ja selbst machen
-
Guten Tag,
ich habe eine csv mit 2 Spalten. In der ersten Spalte steht eine Artikelnummer, in der zweiten die EAN-Nummer, ich möchte die zweite in einen Link einsetzen als Variable:
test.csv
Artikelnummer;EAN
78735;718037773421Link im IE öffnen: http://www.meinedomain.de/search=[EAN]
Mausclick (links) auf Pixelposition 290, 330
Mausclick (links) auf Pixelposition 275, 445Mausclick (rechts) auf Pixelposition 1130, 500
Bild speichern unter
C:\Bilder\[Artikelnummer].jpg
Wenn die Datei schon vorhanden ist soll die Datei nicht ersetzt werden
Mit dem nächsten Datensatz aus der Datei fortfahrenEs wäre sehr schön, wenn mir da jemand etwas auf die schnelle umsetzen könnte, Gegenleistung hatte ich so an 15 Euro gedacht über PayPal.
-
Mir ist aufgefallen, dass in der Schüsselwortdatei die Datensätze, die 3 Spalten haben hinter dem 3. Datensatz kein Simikolon hatten, hatte diese jetzt manuell hinzugefügt, aber jetzt kommt error line 49.
Kann es sein das es damit zusammenhängt?
[autoit]#include <array.au3>
[/autoit]
$file=FileOpen("pricelist.csv",0)
$zielDatei="out.txt"
$fileD=FileOpen($zielDatei,BitOR(8,2))
$arSWords=_gibSchluesselwoerterAlsArray("schlüsselwörter.txt")
while 1
$line=FileReadLine($file)
if @error then
ExitLoop
endif
$ar=StringSplit($line,";",2)
ReDim $ar[Ubound($ar)>18?Ubound($ar):18]
if UBound($ar)>17 then ;HIER ANPASSEN!!!!!! (nur exsistente Felder zählen)
for $i=0 to UBound($arSWords)-1 step 1
if $ar[9]=$arSWords[$i][0] then
$ar[15]=$arSWords[$i][1]
$ar[16]=$arSWords[$i][2]
$ar[17]=$arSWords[$i][3]
endif
next
endif
$string=""
for $l=0 to UBound($ar)-1 step 1
$string&=$ar[$l]
$tmp=4
if $ar[15]<>"" or $ar[16]<>"" or $ar[17]<>"" then
$tmp=1
endif
if $l<UBound($ar)-$tmp then
$string&=";"
endif
next
FileWriteLine($fileD,$string)
WEnd
;Falls deine Schlüsselworte in einer Datei stehen kannst das auch so machen:
;Aufbau der datei:
; J1;P1;Q1
; J2;P2;Q2
Func _gibSchluesselwoerterAlsArray($file)
$data=fileread($file)
$ar=stringsplit($data,@crlf,2+1)
local $array[UBound($ar)][4]
for $i=0 to UBound($ar)-1 step 1
if $ar[$i]<>"" then
$tmp=StringSplit($ar[$i],";",2)
$array[$i][0]=$tmp[0]
$array[$i][1]=$tmp[1]
$array[$i][2]=$tmp[2]
$array[$i][3]=$tmp[3]
endif
next
return $array
EndFunc -
ok, also hier wurden auch die Werte mit Leerzeichen ausgegeben, aber irgendwie werden die Werte bei rund 15 % der Datensätze nicht gefüllt -.-
-
Habe es zwischen zeile 19+20 eingefügt, bekam aber dann ein Fehler in Zeile 20, habe es daraufhin zwischen Zeile 18+18 eingefügt und das Skript läuft durch, aber das Problem das die Werte nicht eingesetzt werden besteht immer noch.
[autoit]#include <array.au3>
[/autoit]
$file=FileOpen("pricelist.csv",0)
$zielDatei="out.txt"
$fileD=FileOpen($zielDatei,BitOR(8,2))
$arSWords=_gibSchluesselwoerterAlsArray("schlüsselwörter.txt")
while 1
$line=FileReadLine($file)
if @error then
ExitLoop
endif
$ar=StringSplit($line,";",2)
ReDim $ar[Ubound($ar)>18?Ubound($ar):18]
if UBound($ar)>17 then ;HIER ANPASSEN!!!!!! (nur exsistente Felder zählen)
for $i=0 to UBound($arSWords)-1 step 1
if $ar[9]=$arSWords[$i][0] then
$ar[15]=$arSWords[$i][1]
$ar[16]=$arSWords[$i][2]
$ar[17]=$arSWords[$i][3]
endif
next
endif
$string=""
for $l=0 to UBound($ar)-1 step 1
$string&=$ar[$l]
$tmp=4
if $ar[15]<>"" or $ar[16]<>"" or $ar[17]<>"" then
$tmp=1
endif
if $l<UBound($ar)-$tmp then
$string&=";"
endif
next
FileWriteLine($fileD,$string)
WEnd
;Falls deine Schlüsselworte in einer Datei stehen kannst das auch so machen:
;Aufbau der datei:
; J1;P1;Q1
; J2;P2;Q2
Func _gibSchluesselwoerterAlsArray($file)
$data=fileread($file)
$ar=stringsplit($data,@crlf,2+1)
local $array[UBound($ar)][4]
for $i=0 to UBound($ar)-1 step 1
if $ar[$i]<>"" then
$tmp=StringSplit($ar[$i],";",2)
$array[$i][0]=$tmp[0]
$array[$i][1]=$tmp[1]
$array[$i][2]=$tmp[2]
$array[$i][3]=$tmp[3]
endif
next
return $array
EndFunc -
ok, hier der code
[autoit]#include <array.au3>
[/autoit]
$file=FileOpen("pricelist.csv",0)
$zielDatei="out.txt"
$fileD=FileOpen($zielDatei,BitOR(8,2))
$arSWords=_gibSchluesselwoerterAlsArray("schlüsselwörter.txt")
while 1
$line=FileReadLine($file)
if @error then
ExitLoop
endif
$ar=StringSplit($line,";",2)
ReDim $ar[Ubound($ar)>18?Ubound($ar):18]
if UBound($ar)>17 then ;HIER ANPASSEN!!!!!! (nur exsistente Felder zählen)
for $i=0 to UBound($arSWords)-1 step 1
if $ar[9]=$arSWords[$i][0] then
$ar[15]=$arSWords[$i][1]
$ar[16]=$arSWords[$i][2]
endif
next
endif
$string=""
for $l=0 to UBound($ar)-1 step 1
$string&=$ar[$l]
$tmp=4
if $ar[15]<>"" or $ar[16]<>"" or $ar[17]<>"" then
$tmp=1
endif
if $l<UBound($ar)-$tmp then
$string&=";"
endif
next
FileWriteLine($fileD,$string)
WEnd
;Falls deine Schlüsselworte in einer Datei stehen kannst das auch so machen:
;Aufbau der datei:
; J1;P1;Q1
; J2;P2;Q2
Func _gibSchluesselwoerterAlsArray($file)
$data=fileread($file)
$ar=stringsplit($data,@crlf,2+1)
local $array[UBound($ar)][4]
for $i=0 to UBound($ar)-1 step 1
if $ar[$i]<>"" then
$tmp=StringSplit($ar[$i],";",2)
$array[$i][0]=$tmp[0]
$array[$i][1]=$tmp[1]
$array[$i][2]=$tmp[2]
$array[$i][3]=$tmp[3]
endif
next
return $array
EndFuncbekomme das in der out ausgegeben, ich habe jetzt einfach mal vermutet, dass es am Leerzeichen liegt... Insgesamt sind es über 5k die übersprungen werden.
Code"164266;0;EUR;4.19;""USB-Stick 4GB Silicon Power 720 Blue/Alu Case"";""Silicon Power"";SP004GBUF2720V1D;4712702625042;85235110;USB-Speicher;W;0.015;0.126;0.083;0.010;Speichermedien;USB-Stick;" "164265;21;EUR;21.60;""USB-Stick 64GB Silicon Power 320 White USB2"";""Silicon Power"";SP064GBUF2320V1W;4712702627800;85235110;USB-Speicher;B;0.013;0.126;0.084;0.010;Speichermedien;USB-Stick;" "81174;0;EUR;99999.99;""PC-Schrank DIGITUS 36HE 600x800mm, grau, mit Stahltür"";Digitus;""DN-19 36U-6/8-PC-SD"";4016032227205;94032080;""19"""" Gehäuse"";K;116.800;0.600;0.800;1.750" "163838;0;EUR;979.51;""HP Quadro K4200 (4GB,DDR5,active,DVI,2xDP)"";""Hewlett & Packard"";J3G89AA;;84715000;""Grafikkarten NVIDIA"";K;0.000;0.000;0.000;0.000" "47202;51;EUR;52.63;""KVM Switch LevelOne 4x USB KVM-0421 mit Audio"";""Level One"";KVM-0421;4015867137871;84719000;""KVM Switches"";B;1.832;0.200;0.370;0.085" "163987;0;EUR;462.15;""DDR4 32GB PC 3000 CL15 G.Skill KIT (8x4GB) 32GRBB Ripjaws 4"";G.Skill;F4-3000C15Q2-32GRBB;4719692001771;84733020;Speichermodule;K;0.000;0.000;0.000;0.000;PC-Komponenten;Arbeitsspeicher;" "37303;51;EUR;2.50;""Patchkabel equip RJ45 S/FTP Cat6 3.00m grün (SSTP) PIMF HF"";Equip;605542;4015867107348;85444210;""Cat6 Kabel"";B;0.117;0.200;0.330;0.400"
-
Ok danke,
jetzt habe ich noch das Problem, dass wenn in dem Schlüsselwort ein Leerzeichen enthalten ist, also z.B. "Software Lizenzen" dieser Datensatz einfach übersprungen wird. Kann man das noch irgend ändern?
-
Vielen Dank für die schnelle Antwort.
Der Fehler lag bei mir, hatte die Datei falsch formatiert.
Bitte schick mir noch deine PayPal-Adresse oder Bankverbindung.
-
Sehr cool, vielen Dank,
wäre es nun noch möglich das man doch zusätzlich noch einen 3. Werte angibt der dann noch mit in die nächste Spalte (R) geschrieben wird?
Viele Grüße
-
Stimmt, 15 und 16 sind noch leer...
ich weiß nicht so genau, was ich anpassen soll Sorry
ich hab es so ausgeführt wie du es geschickt hast, aber die Spalte 15&16 werden nicht gefüllt und die out wird bei jedem versuch größer, vermutlich werden die Datensätze angehangen anstatt die Datei zu überschreiben.
-
Hi Kanashius,
irgendwie will das bei mir noch nicht so richtig laufen. (Habe den Ordner mal im Anhand hochgeladen)
Bitte schick mir noch deine PayPal-Adresse oder Bankverbindung.
Vielen Dank.
-
Hi, danke für die zahlreichen Antworten.
Codesku stock currency price title manufacturer msku ean egId lwg1 availability weight width depth height 164291 0 EUR 21. Okt Belkin USB 2.0 HUB, 1:4, Ultraflach, mit Netzteil, Schwarz Belkin F4U040CW 7,22869E+11 84718000 HUBs K 0.000 0.000 0.000 0.000 164283 0 EUR Jun 55 USB-Stick 16GB Silicon Power 720 Bronze/Alu Case Silicon Power SP016GBUF2720V1Z 4,7127E+12 85235110 USB-Speicher K 0.015 0.126 0.083 0.010 164282 0 EUR Apr 56 USB-Stick 8GB Silicon Power 720 Bronze/Alu Case Silicon Power SP008GBUF2720V1Z 4,7127E+12 85235110 USB-Speicher K 0.015 0.126 0.083 0.010
Das ist die Datei, möchte nun in Spalte P und Q Werte haben, die abhängig von Spalte J sind.
Beispiel anhand der drei Datensätze:
J=Hubs P=Peripherie Q=Hubs
J=USB-Speicher P=Speichermedien Q=USB-SticksAlso die Werte würde ich natürlich je Schlüsselbegriff händisch zuordnen.
@ Kanashius vielen Dank. Kann ich jetzt einfach das:
beliebig oft kopieren und die Werte entsprechend einsetzen?
-
Ja grundsätzlich schon, leider habe ich aber keinen Zugriff auf die Datenbank.
Wenn jemand auf die schnelle etwas schreiben kann, würde auch 10 Euro für das erste funktionierende Skript bieten, dass hier gepostet wird.
-
Hallo,
die CSV ist ursprünglich ein Export aus einer Datenbank und wird von uns per php von einem Server heruntergeladen.
-
Ja also es würde ausreichen, wenn das Skript hinterher 1 mal am Tag läuft. Ausgeführt werden würde es dann nachts auf dem TS, da kann es dann von mir aus auch 30 min ackern...
Da ich selbst leider recht wenig Ahnung von Autoit oder auch anderen Programmierungen habe, weiß ich leider auch nicht auf welchem Weg ich mein Problem am besten löse
-
Achso ok.
Mir schwebte bis dato zwar eher sowas wie das vor..
[autoit]For $i = 1 To UBound($array) - 1
[/autoit]
$array[$i] = StringReplace($array[$i], " ", " ")Aber dann werde ich mich morgen früh mal mit Excel UDF beschäftigen.
Lässt sich das denn irgendwie mit Excel UDF realisieren, ohne dass Excel die Werte so komisch darstellt wie z.B. EANs 8,8877E+11 oder Preise Jun 29?
-
Hallo,
ja habe Excel, nur ist es halt nicht eine einzelne Änderung, sondern die Schlüsselbegriffe nach denen gesucht werden und anhand denen die beiden anderen Spalten gefüllt werden sollen, belaufen sich auf über 300.
Zudem wird die Datei regelmäßig aktualisiert und bekommt täglich neue Datensätze.
Deshalb wäre es sehr umständlich das von Hand über Excel zu machen
-
Hallo,
ich hätte gerne ein Skript, dass diverse Werte in einer .csv (C:\preisliste.csv) in Spalte J einließt und entsprechen mit vorausgewählten Werten die Spalten P und Q füllt. (Also wenn in Spalte J dies steht, dann schreibe in Spalte P das und in Spalte Q jenes...) Das ganze auf alle 46k Datensätze der csv anwenden.
Beispiel:
Spalte J Spalte P Spalte Q
USB-Speicher Speichermedien USB-Sticks
Hat da vielleicht jemand von euch auf die schnelle etwas zur Hand.
Das wäre wirklich perfekt.
Vielen Dank im Vorraus.