Portál AbcLinuxu, 9. listopadu 2025 10:29
wget www.seznam.cz
--06:13:25-- http://www.seznam.cz/
=> `index.html'
Resolving www.seznam.cz... 194.228.32.3
Connecting to www.seznam.cz|194.228.32.3|:80... connected.
HTTP požadavek odeslán, program čeká na odpověď ... 200 OK
Délka: neudáno [text/html]
[ <=> ] 31 595 --.--K/s
06:13:25 (5.98 MB/s) - `index.html' saved [31595]
Potřebuji získat to index.html. Pokud bych tento výstup poslal rourou, např. wget http://www.seznam.cz 2>&1|grep saved|sed -e 'blabla', tak sice získám název, ale přijdu tím o ostatní omáčku z wgetu. Potřeuji i tu omáčku i ten název... Dík za tip!
deb http://ftp.cz.debian.org/debian jessie main contrib non-freewget http://www.seznam.cz 2>&1|tee /dev/stderr|grep saved
Ale fakt jsem nečekal, že mi poradíš zrovna ty...
Ted jěště musím sesmolit ten sed, co mi z 07:00:11 (6.83 MB/s) - `index.html.31' saved [31612]
dá to index.html
deb http://ftp.cz.debian.org/debian jessie main contrib non-free$ echo "07:00:11 (6.83 MB/s) - \`index.html.31' saved [31612]" 07:00:11 (6.83 MB/s) - `index.html.31' saved [31612] $ echo "07:00:11 (6.83 MB/s) - \`index.html.31' saved [31612]" | \ sed -e "s:[[:print:]]*\`::" -e "s?' saved \[[[:digit:]]*\]??g" index.html.31
(Nebo už konečně začal dělat na tom Informixu...
)
-O file
--output-document=file
wget $URL 2>&1 | tee /dev/stderr | grep saved | awk '{ print(substr($5, 2, length($5)-2)); }'
Dík všem a hlavně Davidovi
deb http://ftp.cz.debian.org/debian jessie main contrib non-freedeb http://ftp.cz.debian.org/debian jessie main contrib non-free
file=$(wget $url 2>&1 | sed -n "2{h;s/.*\`\(.*\)'$/\1/p;g};w /dev/stderr")
wget http://seznam.czstáhne něco jiného než
wget http://seznam.cz/index.htmlAle přitom název souboru bude v obou případech 'index.html'. Takže buď ten název souboru známe (je součástí URL) nebo ho neznáme a pak je to index.html. Nebo jsou nějaké výjimky?
#!/usr/bin/env python
import sys,os,urlparse,urllib2
conn = urllib2.urlopen(sys.argv[1])
realurl = conn.geturl()
parsed = urlparse.urlsplit(realurl)
url_path = parsed[2] # Here is the path
filename = os.path.split(url_path)[1]
if not filename:
print 'No filename available, using "index.html"'
filename = 'index.html'
file(filename, 'w').write(conn.read())
Jestliže se pokusím stáhnout
http://kf.fyz.fce.vutbr.cz/pub/bletak to název souboru nenajde a stáhne to do "index.html". Zatímco
http://kf.fyz.fce.vutbr.cz/pub/blaobsahuje konkrétní název souboru, ačkoli to z pouhé adresy nelze poznat. No a v tomto případě se použije název "bla". Zrovna tak to udělá i wget.
ahoj 2 slunce 3 moře 1 člověk 5 atd...
deb http://ftp.cz.debian.org/debian jessie main contrib non-free
nejsem lamka
Ahoj všem a užijte si sluníčka!
deb http://ftp.cz.debian.org/debian jessie main contrib non-freewget -q -O- ... | sed ... | ...Případně pokud by se jednalo o slušný web, mohl byste k vyčištění použít
xsltproc.
#!/usr/bin/env python
import os,sys,elementtree.ElementTree, urllib2
words = {}
def add_to_words(text):
for word in text.split():
try:
words[word] += 1
except KeyError:
words[word] = 1
def find_text(elem):
text = elem.text
if text:
add_to_words(text)
for e in elem: find_text(e)
conn = urllib2.urlopen(sys.argv[1])
doc = elementtree.ElementTree.parse(conn).getroot()
conn.close()
find_text(doc)
for k in words:
print "%d: %s" %(words[k], k)
Kéž by všechny stránky byly v XHTML strict...chorchoj:14:22:02 ~$ wget -q abclinuxu.cz chorchoj:14:22:26 ~$ tidy -xml index.html line 18 column 1 - Error: unexpected </head> in <meta> line 56 column 98 - Error: unexpected </a> in <img> line 57 column 6 - Error: unexpected </div> in <img> line 77 column 1 - Error: unexpected </div> in <img> line 77 column 7 - Error: unexpected </div> in <img> line 96 column 25 - Error: unexpected </form> in <input> 0 warnings, 51 errors were found! Not all warnings/errors were shown. This document has errors that must be fixed before using HTML Tidy to generate a tidied up version. To learn more about HTML Tidy see http://tidy.sourceforge.net Please send bug reports to html-tidy@w3.org HTML and CSS specifications are available from http://www.w3.org/ Lobby your company to join W3C, see http://www.w3.org/ConsortiumZkoušel jsem i víc stránek - na každé je nějaký problém. Neznáte někdo nějaký jiný způsob, jak z HTML udělat well-formed XML?
#!/usr/bin/env python
import os,sys,elementtree.ElementTree, urllib2
words = {}
def find_text(elem):
for word in elem.text.split():
words[word] = words.get(word, 0) + 1
for e in elem: find_text(e)
url = 'http://www.w3schools.com/xml/plant_catalog.xml'
conn = urllib2.urlopen(url)
doc = elementtree.ElementTree.parse(conn).getroot()
conn.close()
find_text(doc)
w = [(y,x) for x,y in words.items()]
w.sort()
for num, word in w:
print "%d: %s" %(num, word)
... ale jinak to trpí tím samým neduhem co předchozí verze.
w = [(y,x) for x,y in words.items()]
w.sort()
for num, word in w:
print "%d: %s" %(num, word)
jde v Python 2.4 nahradit
for word, num in sorted(
words.iteritems(),
key=lambda x: x[::-1],
reverse=True
):
print "%d: %s" %(num, word)Principiálně je to totéž jakow = [(y,x) for x,y in words.iteritems()]
w.sort()
for num, word in w:
print "%d: %s" %(num, word)Ale vypadá to víc perlish :) (jinak to použití iteritems místo items by mělo ušetřit trochu paměti, ještě trošku paměti by mělo ušetřit
for word in sorted(
words.iterkeys(),
key=lambda x: (words[x], x),
reverse=True
):
print "%d: %s" %(words[word], word)ale tam už bude kulhat rychlost) Aneb správný perlista dokáže napsat perlový kód v jakémkoli jazyku 
Pichi varuje: Tento příspěvek není kritika, jen má sloužit jako studijní materiál.
w = [(y,x) for x,y in words.iteritems()]
del words #šetříme pamětí
w.sort()
for num, word in w:
print "%d: %s" %(num, word)

lynx -dump www.abclinuxu.cz \ | sed -e 's/[^a-z0-9]\+/ /g' -e 's/[ \t]\+/\n/g' \ | sort \ | uniq -c \ | sort -n
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.