Zeichensatz-Problem ?

OsunSeyi

OsunSeyi

Foren As
Wir haben hier einen (etwas seltsamen) Film am laufen:
Es geht darum, Url's aus einer Liste von w3m (oder lynx) laden zu lassen und zu dumpen.
Das klappt normal auch, aber bestimmte Url's wollen einfach nicht.
Dabei passiert (gekürzt) folgendes:

Code:
# Inhalt von 'tmp':
http://...url1
http://...url2
http://...url3
...

# Inhalt von 'TEST':
set -x
$tmp='...'

for i in `cat "$tmp"`; do
   echo "$i"
    w3m "$i";
exit
done; 

# Ausgabe:
1) Ausgabe von 'set -x' ist verkehrt.
2) 'w3m' lädt eine verkehrte Adresse.
3) 'echo' gibt die Adresse aber richtig aus!

# Original:
http://www.truckscout24.de/search/ger/detail.asp?vehicletype_id=2\
&vehicle_id=10420683&make=0&mid=2&page=1&language=ger

# Was ´draus wird:
http://www.truckscout24.de/search/ger/detail.asp vehicletype_id=2\
&vehicle_id=10420683&make'0&mid=2&page=1&language=ger

Bei "detail.asp?" fehlt das Fragezeichen und "&make=" wird zu "&make'".
Übergebe ich aber die Variable in der Form:
var='http:...', lädt 'w3m $var' die Adresse korrekt.
Woran kann das liegen?
 
ersetze mal

Code:
   echo "$i"
   w3m "$i"

durch

Code:
   echo '$i'
   w3m '$i'

Außerdem gefiele mir persönlich dieses Konstukt besser (uuoc):
Code:
while read i
do
...
...
done < tmp
 
Sorry, ich bin noch nicht sehr bewandert...8)
Code:
while read i
do
    w3m  '$i'
    echo '$i'

done < $tmp

w3m: can't load '$i'
Da ist noch was verkehrt...
gruß,
tom
 
Ups, das kann ja so auch nicht gehen. Ein ganz blöder Vorschlag von mir. ;-)

Die einfachen Hochkomma verhindern, dass die Shell die Variable auslesen, bzw überhaupt als Variable erkennen, kann.

Dein Problem ist, dass in den Strings Sonderzeichen (z.B "?") enthalten sind, die von der Shell interpretiert werden, wenn w3m aufgerufen wird. Das wird normalerweise durch einfache Hochkommas verhindert. Geht jedoch nur, wenn es keine Variable ist.

Hmm...
 
Ohne flamen zu wollen, warum verwendest du nicht wget?

PS: Bei "..." wird interpretiert, bei '...' nicht.
 
"GNU wget ist ein praktisches Tool, um Dateien aus dem Web zu laden..."
Wusste nicht, daß es das gibt.
Ist sogar installiert...:))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+
OK:
wget:
Kann nicht nach »www.truckscout24.de/search/ger/list...&catalysator_id=0&gearingtype_id=0&fuel_id=0« schreiben (Der Dateiname ist zu lang).
Mir wurde nahegelegt, das Script lieber mit Perl anzugehen (kann ich aber noch nicht..)
Eigentlich klappt alles bestens, wenn dieses blöde Prob´ mit den Adressen von autoscout nicht wäre...
 
Zuletzt bearbeitet:
Wenn es bei Dir klappt, heißt das doch im Grunde, das auf meinem System was falsch eingestellt ist (?)
Mit 'set -x' wird bei den betreffenden Zeilen folgendes ausgegeben:
Code:
set -x:
+ lynx -dump 'http://www.truckscout24.de/search/ger/detail.asp?vehicletype_id=2&\
vehicle_id=1026936'&make=0&mid=2&page=1&language=ger

=> 936'&make ?

echo:
http://www.truckscout24.de/search/ger/detail.asp?\
vehicletype_id=2&vehicle_id=10269367&make=0&mid=2&page=1&language=ger

=> 9367&make !
Eine konvertierung des Strings nach utf resp. iso (beides probiert) hilft leider nicht.
 
Code:
#!/bin/sh
## suchkfz

set -x

   TMP=$HOME'/DAT/D/BIN/BIN_XYZ/.suchkfz'
  TMP1=$HOME'/DAT/D/BIN/BIN_XYZ/.suchkfz1'

# die Suchanfrage: 
scout='http://www.truckscout24.de/search/ger/list.asp?mid=2&vehicletype_id=2&language=ger&substructure_id=15&make=0&model=&pricefrom=-1&priceto=5000&mileagefrom=-1&mileageto=0&yearfrom=2002&yearto=0&totweightfrom=-1&totweightto=0&powerfrom=50&powerto=0&country=D&zip=49406&radius=100&price_type=1&sort=price&age=0&tst=&tmk=&tct=&action=Suchen&color_id=0&catalysator_id=0&gearingtype_id=0&fuel_id=0'

lynx -source $scout > $TMP

# alle Links zu Detailansichten filtern:
 cat $TMP								   	                            |\
	egrep 'detail\.asp\?vehicletype_id'					                 |\
	egrep -v '<IMG'								                          |\
	sed 's/^[[:space:]]*//g'						                          |\
	sed 's|<a href="|<a href="http://www.truckscout24.de/search/ger/|'	|\
	sed 's/<a href="//g'							                          |\
	sed 's/">//g'								                               \
	> $TMP1

# die Detailansichten dumpen:
cat $TMP1 | while read line

do
	echo "$line"
	lynx -dump "$line"
done

exit 0
so sieht's aus.
funktioniert (auf ähnliche Weise) mit Ebay umd mobile.de prima (wenngleich auch die Vorgehensweise...?)
 

Ähnliche Themen

Kerberos SSO

X startet nichtmehr

Debian Routing Problem

JBidWatcher: Problem bei loading Auctions in Verbindung mit mySQL

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

Zurück
Oben