Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index International Gentoo Users Deutsches Forum (German)
  • Search

sed: link aus html file extrahieren

Support-Forum
Diskussionen rund um Installation, Betrieb und Anpassungen von Gentoo und dessen Paketen sowie dabei auftretenden (technischen) Problemen.
Deutsches Portal: www.gentoo.de
Post Reply
  • Print view
Advanced search
18 posts • Page 1 of 1
Author
Message
72_6f_6c_61_6e_64
Guru
Guru
User avatar
Posts: 438
Joined: Mon Nov 16, 2009 9:30 am
Location: 39° 6′ 18″ N, 76° 44′ 29″ W

sed: link aus html file extrahieren

  • Quote

Post by 72_6f_6c_61_6e_64 » Wed Sep 07, 2011 3:16 pm

Hallo,

ich weiß das ist ein Gentoo Forum, aber ich hab schon mal ein Thema gesehen, in dem über sed diskutiert wurde.

Ich habe folgendes Problem.

Ich hol mir mit curl eine Seite, und will alle Links (a href) in einer Datei stehen haben.

Ich hab mal mit "grep 'a href'" nur die relevanten Zeilen herausgenommen.

Ich kenn mich aber mit sed nicht genug aus. Was muss man sed als Parameter anhängen, dass er alles von "<a href" bis ">" (also der a-tag zu) ausgibt?

LG Roland
Man gewöhnt sich an allem, sogar am Dativ.
Top
Christian99
Veteran
Veteran
Posts: 1769
Joined: Thu May 28, 2009 5:20 pm

  • Quote

Post by Christian99 » Wed Sep 07, 2011 3:45 pm

Hallo, schau dir doch mal das hier an: http://www.thomashertweck.de/sedawk.html
wenn du danach noch fragen hast, nur zu!

Schöne Grüße
Christian
Top
72_6f_6c_61_6e_64
Guru
Guru
User avatar
Posts: 438
Joined: Mon Nov 16, 2009 9:30 am
Location: 39° 6′ 18″ N, 76° 44′ 29″ W

  • Quote

Post by 72_6f_6c_61_6e_64 » Wed Sep 07, 2011 5:37 pm

Danke für den Link. Das ist ein super Tutorial, ich hab schon ein paar gelesen, die waren aber nie so informativ.

Verstanden hab ich glaub ich jetzt mehr, aber ich weiß immer noch nicht genau wie ich das ausfiltre.

Mit grep 'a href' bekomm ich ja die Zeilen, aber wie man nur den http-link rauskommt da scheitere ich.
Man gewöhnt sich an allem, sogar am Dativ.
Top
Finswimmer
Bodhisattva
Bodhisattva
User avatar
Posts: 5467
Joined: Thu Sep 02, 2004 3:46 pm
Location: Langen (Hessen), Germany

  • Quote

Post by Finswimmer » Wed Sep 07, 2011 5:56 pm

echo "eiaeae<a href="http://www.test.de">test.de</a>aieiaeaiea" | gawk -F= '{ print $2 }'| gawk -F\> '{ print $1 }'
Bitte auf Rechtschreibung, korrekte Formatierung und Höflichkeit achten!
Danke
Top
72_6f_6c_61_6e_64
Guru
Guru
User avatar
Posts: 438
Joined: Mon Nov 16, 2009 9:30 am
Location: 39° 6′ 18″ N, 76° 44′ 29″ W

  • Quote

Post by 72_6f_6c_61_6e_64 » Wed Sep 07, 2011 7:19 pm

Danke für das Beispiel. Das geht ja sogar ohne sed.

Ich hab am mac kein gawk sondern nur awk (das ist aber das selbe oder? das g steht ja nur für GNU).

Bei deinem Beispiel funktioniert das auch wunderbar.

aber wenn ich ein curl davor in die pipe hänge kommt viel aber kein einziger link den ich suche.


Edit:

wenn ich das richtig lese zeigt er mir den Inhalt der tags davor.
Man gewöhnt sich an allem, sogar am Dativ.
Top
yuhu
Tux's lil' helper
Tux's lil' helper
Posts: 86
Joined: Tue Oct 17, 2006 3:22 pm

  • Quote

Post by yuhu » Wed Sep 07, 2011 7:26 pm

zeig mal ein Beispiel wie es nicht geht.
Top
72_6f_6c_61_6e_64
Guru
Guru
User avatar
Posts: 438
Joined: Mon Nov 16, 2009 9:30 am
Location: 39° 6′ 18″ N, 76° 44′ 29″ W

  • Quote

Post by 72_6f_6c_61_6e_64 » Wed Sep 07, 2011 7:32 pm

kommen tut sowas auf die art:

Code: Select all

'catlinks' class
"visualClear"





"mw-head" class


"p-personal" class


"pt-login"




"left-navigation"


"p-namespaces" class


"ca-special" class






"p-variants" class
"#"
"menu"







"right-navigation"


"p-views" class








"p-cactions" class
"#"
"menu"








"p-search"
"searchInput"
"/w/index.php" id
'hidden' name
"simpleSearch"
"searchInput" name
"searchButton" type









"mw-panel" class

"p-logo"







"portal" id

"body"

"n-mainpage-description"
"n-aboutsite"
"n-topics"
"n-alphindex"
"n-randompage"







"portal" id

"body"

"n-help"
"n-portal"
"n-recentchanges"
"n-contact"
"n-sitesupport"







"portal" id

"body"

"t-specialpages"












"footer"
"footer-places"
"footer-places-privacy"
"footer-places-about"
"footer-places-disclaimer"
"footer-places-mobileview"

"footer-icons" class
"footer-copyrightico"
"http://wikimediafoundation.org/"

"footer-poweredbyico"
"http://www.mediawiki.org/"


"clear:both"


"text/javascript"





"/w/index.php?title
"http://bits.wikimedia.org/de.wikipedia.org/load.php?debug
"text/javascript"





"text/javascript" src
"text/javascript"
Man gewöhnt sich an allem, sogar am Dativ.
Top
Christian99
Veteran
Veteran
Posts: 1769
Joined: Thu May 28, 2009 5:20 pm

  • Quote

Post by Christian99 » Wed Sep 07, 2011 8:28 pm

ich bin mir net sicher, aber hast du jetzt das

Code: Select all

|grep "a href"|
rausgelassen? das sieht mir fast so aus.
lass doch mal die ausgabe von curl in eine datei umleiten und poste die mal (am besten paste service oder so und auchtung falls sessionids drin sind. die am besten rausmachen) und außerdem den befehl den du verwendest. dann lässt sich das besser nachvollziehen.
Top
72_6f_6c_61_6e_64
Guru
Guru
User avatar
Posts: 438
Joined: Mon Nov 16, 2009 9:30 am
Location: 39° 6′ 18″ N, 76° 44′ 29″ W

  • Quote

Post by 72_6f_6c_61_6e_64 » Thu Sep 08, 2011 7:58 am

korrekt, das hab ich vergessen.

jetzt kommt aber:

Code: Select all

curl "http://de.wikipedia.org/w/index.php?title=Spezial:Alle_Seiten" | grep 'href' | awk -F= '{ print $2 }' | awk -f\> '{ print $1 }'            
awk: can't open file { print $1 }
 source line number 1 source file { print $1 }
 context is
	 >>>  <<< 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 54049  100 54049    0     0  61831      0 --:--:-- --:--:-- --:--:-- 67900
Man gewöhnt sich an allem, sogar am Dativ.
Top
Christian99
Veteran
Veteran
Posts: 1769
Joined: Thu May 28, 2009 5:20 pm

  • Quote

Post by Christian99 » Thu Sep 08, 2011 8:53 am

auf den ersten blick würd ich sagen, das f beim zweiten awk muss groß sein
Top
Knieper
l33t
l33t
Posts: 846
Joined: Thu Nov 10, 2005 12:14 pm

  • Quote

Post by Knieper » Thu Sep 08, 2011 9:16 am

Code: Select all

elinks -dump -no-numbering "http://de.wikipedia.org/w/index.php?title=Spezial:Alle_Seiten" | grep '^[ \t.]*http' | sed 's/^[ .\t]*//'
Einfach mal abgewöhnen in html mit regulären Ausdrücken rumzufuschen. Html ist nicht regulär.
Je dümmer desto Gnome/KDE.
Top
slick
Bodhisattva
Bodhisattva
User avatar
Posts: 3495
Joined: Sun Apr 20, 2003 11:44 am

  • Quote

Post by slick » Thu Sep 08, 2011 9:17 am

Parsen des HTML-Code liefert auch relative Links etc. zurück. Für "komplette" Links besser mit lynx:

(ungetestet aus dem Kopf)

Code: Select all

lynx -dump "$url" | grep -e " .[0-9+]\.\ "| cut -d "." -f 2-
Da lassen sich noch schön weitere greps anhängen um die Links genauer zu selektieren.
Top
72_6f_6c_61_6e_64
Guru
Guru
User avatar
Posts: 438
Joined: Mon Nov 16, 2009 9:30 am
Location: 39° 6′ 18″ N, 76° 44′ 29″ W

  • Quote

Post by 72_6f_6c_61_6e_64 » Thu Sep 08, 2011 6:51 pm

damit spuckt er mal links aus, aber längst nicht alle
Man gewöhnt sich an allem, sogar am Dativ.
Top
178238
n00b
n00b
User avatar
Posts: 55
Joined: Thu Dec 13, 2007 7:54 am

Re: sed: link aus html file extrahieren

  • Quote

Post by 178238 » Thu Sep 08, 2011 10:53 pm

72_6f_6c_61_6e_64 wrote: Was muss man sed als Parameter anhängen, dass er alles von "<a href" bis ">" (also der a-tag zu) ausgibt?
Nabend.
Eigentlich sollte das sein was du suchst:

Code: Select all

curl -s "$URL" | sed -ne 's/.*href="\([^["]*\)".*/\1/pg'
Kann man evtl. noch verfeiner:

Code: Select all

curl -s "$URL" | sed -ne 's/.*<a href="\(http:\/\/[^["]*\)".*/\1/pg' 
Top
72_6f_6c_61_6e_64
Guru
Guru
User avatar
Posts: 438
Joined: Mon Nov 16, 2009 9:30 am
Location: 39° 6′ 18″ N, 76° 44′ 29″ W

  • Quote

Post by 72_6f_6c_61_6e_64 » Sat Sep 10, 2011 6:16 pm

Hallo, die Sachen mit sed geben zwar links aus, aber noch immer nicht alles.

die links schauen so aus:

<a href="/w/index.php?title=Spezial:Alle_Seiten&amp;from=Alatriste&amp;to=Ali_Chamene%27i">Ali Chamene'i</a>

wie muss ich das dann anpassen?
Man gewöhnt sich an allem, sogar am Dativ.
Top
178238
n00b
n00b
User avatar
Posts: 55
Joined: Thu Dec 13, 2007 7:54 am

  • Quote

Post by 178238 » Sat Sep 10, 2011 8:17 pm

Sofern man wirklich nur sed hernehmen will würde ich das auf die Schnelle mal mit

Code: Select all

curl -s "http://de.wikipedia.org/w/index.php?title=Spezial:Alle_Seiten"  | sed -e 's/href/\nhref/g' | sed -ne 's/.*href="\([^["]*\)".*/\1/pg'
...lösen. Ist für meinen Geschmack zwar unsauber, sollte aber zumindestens alle Links ausspucken.
Top
72_6f_6c_61_6e_64
Guru
Guru
User avatar
Posts: 438
Joined: Mon Nov 16, 2009 9:30 am
Location: 39° 6′ 18″ N, 76° 44′ 29″ W

  • Quote

Post by 72_6f_6c_61_6e_64 » Mon Sep 12, 2011 5:13 pm

alles kommt da aber immer noch nicht
Man gewöhnt sich an allem, sogar am Dativ.
Top
178238
n00b
n00b
User avatar
Posts: 55
Joined: Thu Dec 13, 2007 7:54 am

  • Quote

Post by 178238 » Mon Sep 12, 2011 6:16 pm

Da ich kein sed-Guru bin kann das durchaus sein ;) Ich muss mich dann allerdings auch Knieper anschließen: HTML und reguläre Ausdrücke vertragen sich nicht sonderlich. Dazu mal ein netter Artikel: http://www.codinghorror.com/blog/2009/1 ... u-way.html.
Ein anderes großes Problem ist IMHO die Tatsache, dass sed kein "non greedy matching" bietet. Hierzu evtl.: http://stackoverflow.com/questions/1103 ... ing-in-sed

Sofern man nun wirklich nur sed nehmen will und auf grep/awk/perl etc. völlig verzichtet, kommt man nicht darum herum sein sed script mehr oder weniger statisch an den zu erwartenden (html-)code anzupassen. Wenn nun z.B. mehrere Links pro Zeile kommen heißt das extra newlines am Ende eines Tags einzufügen und ähnliche Grausamkeiten. In dem Zusammenhang kannst du ja gerne den Link/Code posten um den es dir geht.

Kritik zu meinem Gesagtem ist durchaus erwünscht ;)
Top
Post Reply
  • Print view

18 posts • Page 1 of 1

Return to “Deutsches Forum (German)”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy

 

 

magic