Vraag wget en mooie urls


Om dingen te automatiseren, moet ik een webpagina recursief downloaden. Ik gebruik wget omdat dit waarschijnlijk de meest programmeerbare tool is die beschikbaar is, met behulp van -r vlag om de volgende link te activeren.

wget, hovewer, verwerkt geen mooie URL's, d.w.z. http: //webpage/index.php/my/pretty/link, behandel ze als submappen.

Is er een oplossing voor dit probleem? (Ik wil liever de broncode van die webpagina niet wijzigen)

cheers, MH

EDIT: probleem opgelost

Bedankt voor uw inzichtelijke antwoorden!

Ik heb dit probleem weten op te lossen door middel van kleine aanpassingen aan de genoemde webpagina.

Wat ik deed was simpel: ik heb de url herschrijffuncties van mijn server en omgeleide URL's gebruikt van http: // website / mijn / vrij / link naar http: //webpage/index.php/my/pretty/link. Vervolgens, met behulp van volgende wget-vlaggen:

wget --mirror --page-requisites --html-extension --convert-links http://webpage/

Voila! Het werkt allemaal perfect (er zijn nog steeds directiories gemaakt in het proces, maar het is triviaal om het vanaf dit punt af te handelen met een soort script).


5
2018-06-26 19:18


oorsprong




antwoorden:


Nou, hoe wget hoort te weten of index.php / my / pretty eigenlijk is niet een map? Dit is helemaal niet duidelijk vanuit het perspectief van de HTTP-client.

Misschien kan dat wget --exclude-directories om dit te omzeilen? Of misschien controleren wget -nd, waarmee een platte set bestanden wordt gemaakt (geen mapstructuur). Bekijk deze.


3
2018-06-26 19:28





Mooie URL's zijn meestal niet zelfredzaam, ze gebruiken vaker een monteur om data heen en weer door te sturen (via POST of cookies) naar een MVC-framework-gebaseerde applicatie op de backend.

Als u meerdere wget-oproepen gebruikt, is het handig om te weten dat wget cookies gebruikt maar deze standaard niet opslaat ... wat betekent dat elke wget met een nieuwe cookie begint en niet over de beschikbare overheidsinformatie beschikt . de opties --save-cookies (bestandsnaam) en --load-cookies (bestandsnaam) helpen u daar.

Als de webtoepassing POST als een monteur gebruikt, denk ik dat je waarschijnlijk een specifieke crawler moet gaan maken die op die site is afgestemd.


1
2018-06-26 19:35





Misschien kunt u Firefox gebruiken met de iMacros-addon in plaats van wget? Het heeft opdrachtregelondersteuning, maar kan koppelingen niet automatisch volgen (je zou dat moeten scripten).

http://wiki.imacros.net/iMacros_for_Firefox#Command_Line_Support

Ik gebruik het om verschillende rapporten dagelijks te downloaden.


1
2018-06-26 21:04





Als je dezelfde site vele malen gebruikt, zou je de alias-opdracht kunnen overwegen, je zou een alias kunnen maken met een beschrijvende naam om te wgeten met volledige padnaam

alias mywget='wget http://domain.com/file/?search&channel=24'

uiteraard voeg je de schakelaars toe die je nodig hebt, dan kunnen je piepgeluiden mywget gewoon uitvoeren om de functie uit te voeren

hoewel ik niet zeker weet wat er zal gebeuren zodra het de & raakt zoals je normaal een url als die in zijn aanhalingstekens zou plaatsen

hoop dat het helpt


-1
2018-06-26 19:34