Sida 1 av 1

Spara länkar och rss från en webbsida mha wget?

Postat: 15 mar 2009, 14:17
av ubot
Jag vill söka igenom en webbsida efter länkar och sedan leta igenom alla länkar efter rss feeds. Jag behöver nog manuellt gå in och ta bort vissa länkar som jag inte vill söka rss feed för innan steg två i processen startar. Min idé är därför att använda wget för att hitta alla ut-länkar som finns på en webbsida (ej interna länkar) och sedan spara resultatet till en fil. Därefter tänker jag manuellt gå igenom länkarna och radera mindre intressanta länkar. Efteråt vill jag läsa in filen i någon funktion (wget?) som genererar en lista med url till alla rss feeds som finns i var och en av länkarna (helst vill jag ha rss feed:et som visas i Firefox adressfält när man går in på sidan och inte ALLA rss feeds på bloggen/webbsidan). Det här lär väl inte vara så svårt, eller? Problemet är att jag hittar ingen bra info på Google och jag har inte kunskap om wget (och Linux) för att veta vilka kommandon jag ska använda. Är det någon som har lust att hjälpa mig eller som har ett bättre förslag?

Re: Spara länkar och rss från en webbsida mha wget?

Postat: 15 mar 2009, 15:45
av David Andersson
Du kan få wget att rensa url-er med --exclude-directories och --exclude-domains. Så behöver man inte dela upp det i flera steg. Genom att låte wget gå 3 steg så kommer den att ladda ner själva rss-filerna. Sen tar man bort allt som inte är rss.

Utkast. Inte 100% testat.

Kod: Markera allt

url="http://ubuntu-se.org/drupal/"   # startpunkt
excldirs="/tags/"         # gå inte in i tag-moln
excldoms="google.com"    # too much

tempdir=~/my_wget_thing
cd "$tempdir"

# hämta allt upp till 3 steg
wget --recursive --level=2 --exclude-directories="$excldirs" --exclude-domains="$excldoms" "$url"

# ta bort alla filer som inte är rss-sidor
find -type f -exec grep -L '<rss' {} + | xargs rm

# och sen lite instruktioner som rensar bort tomma mappar om det behövs
# och flytta rss-sidor om det behövs
Det skulle förståss gå fortare om man bara lät wget gå 2 steg och sedan filtrerade noggrannare att bara läsa rss-sidor i 3e steget.

När man rensar bort ointressanta länkar med --exclude-directories och --exclude-domains så är ju det "manuella" steget nåt man gör i förväg. Om man har olika url varje gång och det är olika saker som måste exkluderas så behövs en mer interaktiv lösning.

Re: Spara länkar och rss från en webbsida mha wget?

Postat: 15 mar 2009, 15:52
av ubot
David Andersson skrev:Du kan få wget att rensa url-er med --exclude-directories och --exclude-domains. Så behöver man inte dela upp det i flera steg. Genom att låte wget gå 3 steg så kommer den att ladda ner själva rss-filerna. Sen tar man bort allt som inte är rss.

Utkast. Inte 100% testat.

Kod: Markera allt

url="http://ubuntu-se.org/drupal/"   # startpunkt
excldirs="/tags/"         # gå inte in i tag-moln
excldoms="google.com"    # too much

tempdir=~/my_wget_thing
cd "$tempdir"

# hämta allt upp till 3 steg
wget --recursive --level=2 --exclude-directories="$excldirs" --exclude-domains="$excldoms" "$url"

# ta bort alla filer som inte är rss-sidor
find -type f -exec grep -L '<rss' {} + | xargs rm

# och sen lite instruktioner som rensar bort tomma mappar om det behövs
# och flytta rss-sidor om det behövs
Det skulle förståss gå fortare om man bara lät wget gå 2 steg och sedan filtrerade noggrannare att bara läsa rss-sidor i 3e steget.

När man rensar bort ointressanta länkar med --exclude-directories och --exclude-domains så är ju det "manuella" steget nåt man gör i förväg. Om man har olika url varje gång och det är olika saker som måste exkluderas så behövs en mer interaktiv lösning.
Ok, låter bra. Jag vill hitta rss feeds från olika sajter varje gång. Så jag söker efter olika rss feeds i externa länkar från olika webbsidor (en webbsida/gång). Tänk dig att man söker i Google och sedan vill hitta rss feedsen från alla sidor som syns på förstasidan i sökresultaten, typ. Ungefär så vill jag göra (men inte från Google), dvs den usprungliga webbsidan har olika adress varje gång och webbsidans externa länkar (med rss feed) är också olika. Jag är alltså ute efter en metod att hitta rss feeds som tillhör externa webbsidor som är länkade från en webbsida med en domänadress som är olika varje gång.

Re: Spara länkar och rss från en webbsida mha wget?

Postat: 15 mar 2009, 16:21
av David Andersson
ubot skrev: Ok, låter bra. Jag vill hitta rss feeds från olika sajter varje gång. Så jag söker efter olika rss feeds i externa länkar från olika webbsidor (en webbsida/gång). Tänk dig att man söker i Google och sedan vill hitta rss feedsen från alla sidor som syns på förstasidan i sökresultaten, typ. Ungefär så vill jag göra (men inte från Google), dvs den usprungliga webbsidan har olika adress varje gång och webbsidans externa länkar (med rss feed) är också olika. Jag är alltså ute efter en metod att hitta rss feeds som tillhör externa webbsidor som är länkade från en webbsida med en domänadress som är olika varje gång.
1) Antar att du menar att det är olika url varje gång. Ändra bra url varje gång, eller ändra den till en parameter.

2) Lägg till --span-hosts. Wget behöver flaggan --span-hosts för att följa länkar till andra sajter, t.ex i sökresultaten från google.

Re: Spara länkar och rss från en webbsida mha wget?

Postat: 15 mar 2009, 22:32
av ubot
David Andersson skrev:
ubot skrev: Ok, låter bra. Jag vill hitta rss feeds från olika sajter varje gång. Så jag söker efter olika rss feeds i externa länkar från olika webbsidor (en webbsida/gång). Tänk dig att man söker i Google och sedan vill hitta rss feedsen från alla sidor som syns på förstasidan i sökresultaten, typ. Ungefär så vill jag göra (men inte från Google), dvs den usprungliga webbsidan har olika adress varje gång och webbsidans externa länkar (med rss feed) är också olika. Jag är alltså ute efter en metod att hitta rss feeds som tillhör externa webbsidor som är länkade från en webbsida med en domänadress som är olika varje gång.
1) Antar att du menar att det är olika url varje gång. Ändra bra url varje gång, eller ändra den till en parameter.

2) Lägg till --span-hosts. Wget behöver flaggan --span-hosts för att följa länkar till andra sajter, t.ex i sökresultaten från google.
1. Jag ändrar bara url:en till olika sajter varje gång. Inga problem.

2. Jag vill tom att funktionen exkluderar interna undersidor på ursprungliga url:en och bara söker efter rss på webbsidor som finns som länkar på första webbsajten. Om jag vill åt rss feeds från länkar i Googles sökresultat så vill jag inte ha med rss feeds på Google, utan bara rss feeds som finns på sidorna som länkarna i sökresultaten leder till. Om jag söker efter Ubuntu i Google så vill jag alltså att funktionen söker upp rss feeds på Ubuntu.com som förekommer som länk i sökresultaten på Google. Jag vill inte ha med rss feeds från ursprungliga url:en, dvs inga rss feeds från google.com i det här exemplet.

Re: Spara länkar och rss från en webbsida mha wget?

Postat: 16 mar 2009, 09:05
av ubot
Jag får inte scriptet i postningarna här ovanför att fungera. Jag har en annan idé. Tydligen är det så att tex Firefox hittar webbsidornas rss feed (som syns som ikon i Firefox adressfält) i källkoden i en rad som lyder någonting i stil med:

Kod: Markera allt

<link rel="alternate" type="application/rss+xml" title="Planet Ubuntu feed" href="rss20.xml" />
Borde det inte gå att på ett smidigt sätt hämta källkoden med wget eller lynx och sedan kort och gott söka efter biten type="application/rss+xml" och hämta rss flödet med grep (eller något annat lämpligt kommando) och spara till en fil. Isf måste man också ta hänsyn till om rss feed:ets url är komplett eller relativt som i exemplet med Ubuntu Planet. Vad tror ni?

Jag tänker mig någonting i stil med:

lynx -source http://www.example.com > /home/name/Skrivbord/htmlcode.txt
grep "application/rss+xml" /home/name/Skrivbord/htmlcode.txt > /home/name/Skrivbord/rssurl.txt

På något vis måste grep plocka ut url:en till rss-flödet (relativt eller absolut) från linjen som grep genererar. Dessutom måste det finns någon funktion för att lynx ska följa länkar till externa webbsidor, tex följa länkarna i Googles sökresultat en level. Kanske går det även lika bra att hämta källkoden till en webbsida mha wget som med lynx?

Re: Spara länkar och rss från en webbsida mha wget?

Postat: 16 mar 2009, 13:28
av ubot
Nej, jag får inte ihop det, men det är väl inte så svårt att få ihop lite kod som följer ett antal länkar på en sajt och plockar rss feeds:en från länkarnas webbsidor. Jag tycker inte det här borde vara en omöjlighet.

Re: Spara länkar och rss från en webbsida mha wget?

Postat: 16 mar 2009, 17:31
av ubot
Nu börjar det likna något. Mha av den här raden så får jag en fin lista med länkar från sajt example.com:

Kod: Markera allt

lynx -dump "http://www.example.com/" | egrep -o "http:.*" >/home/x/Skrivbord/rssurl.txt
Nu återstår att få lynx att gå in på alla undersidor av förstasidan och inte bara dumpa förstasidan utan alla externa länkar som leder från förstasidan till andra sajter. Jag måste alltså få lynx att besöka och "-dumpa" innehållet i många externa länkar räknat från första webbsidan. Går det att få lynx att "dumpa" innehållet från webbsajter rekursivt utifrån länkarna på första sajten?
Dessutom ska jag sedan filtrera listan med länkar som egrep genererar med keywords som feed, rss, xml och andra ord som fint sorterar ut just länkar som är rss feeds. Någon som har lust att hjälpa mig med dessa steg?

Ok, jag har hittat ett script som kanske fungerar:

Kod: Markera allt

lynx -dump "http://www.example.com/" | egrep -o "http:.*" > /home/x/Skrivbord/rssurl.txt

while read inputline
do
  url="$(echo $inputline)"
  mydata="$(lynx -dump $url |  egrep -o "http:.*")"
  echo "$url,$mydata" >> rssurl_final.csv
  sleep 2
done < /home/x/Skrivbord/rssurl.txt
Sedan måste rssurl_final.csv filtreras på något vis så att bara rss feeds:ens url blir kvar till slut.

Tja, vad tror ni? Hur ska jag göra det här sciptet "körbart" på något vis så att jag har möjlighet att testa vad det går för? Är det något uppenbart fel i scriptet?

Re: Spara länkar och rss från en webbsida mha wget?

Postat: 16 mar 2009, 21:25
av ubot
Scriptet verkar fungera, men jag behöver filtrera länkarna så jag blir av med alla som inte innehåller url:er till rss feeds. Hur gör jag det på ett smidigt sätt? Genom att filtrera ut länkar ur listan som inte har ordet rss, feed, xml osv i url:en, eller har någon ett bättre förslag? Jag har en hel drös länkar och jag vill bara ha länkar som går till rss feeds, inte alla andra länkar som finns på en sajt. Går det på något smidigt sätt att köra kommandot grep så att en länk tas med om ett eller flera av nyckelorden finns med i url:en?