Miten tehdään ohjelma, jolla voisi luetella kaikkien annetun nettisivun alasivut? Siis jos vaikkapa annan osoitteeksi
http://keskustelu.suomi24.fi/ , niin se osaisi antaa muiden muassa sivun http://keskustelu.suomi24.fi/debate/3341 mutta ei sivua http://keskustelu.suomi24.fi/dekate/3341 Tai että sivua https://fi.wikipedia.org/wiki/17._tammikuutajjjjj ei oteta luetteloon mutta https://fi.wikipedia.org/wiki/17._tammikuuta otetaan. Varmaankin on olemassa tehokkaampikin tapa kuin kaikkien eri osoitteiden läpikäynti
http://keskustelu.suomi24.fi/ , niin se osaisi antaa muiden muassa sivun http://keskustelu.suomi24.fi/debate/3341 mutta ei sivua http://keskustelu.suomi24.fi/dekate/3341 Tai että sivua https://fi.wikipedia.org/wiki/17._tammikuutajjjjj ei oteta luetteloon mutta https://fi.wikipedia.org/wiki/17._tammikuuta otetaan. Varmaankin on olemassa tehokkaampikin tapa kuin kaikkien eri osoitteiden läpikäynti
Vastaukset 4
Vanhimmat
1. Lataa sivu
2. Parseta se
3. Poimi linkit
4. ???
Sivujen lataamiseen löytyy kaikki tarvittava urllib2 -moduulista. Jos vähänkään monimutkaisemmasta on kyse niin on suositeltavaa käyttää Requests -moduulia joka tekee siitä inhimillisempää (http://docs.python-requests.org/en/latest/)
Linkkien poimiminen onnistuu toki suoraan sivun datasta kaivelemallakin. Mutta miksi nähdä sitä vaivaa kun on olemassa Beautiful Soup? Parsetat sivun souppia käyttämällä ja sen kun poimit linkit DOM:sta
http://www.crummy.com/software/BeautifulSoup/
Ja jos johonkin oikeeseen tarpeeseen tulee niin kannattaa tarkistaa onko jotain valmista soveltuvaa jo olemassa.
http://blog.adlibre.org/2011/06/03/extracting-all-links-website-using-wget/
Niin. Ajattelin lähinnä, että miten saan selville ne sivut, joihin ei ole linkkiä muilta sivuilta.
Löytyikin, https://fi.wikipedia.org/wiki/Toiminnot:Kaikki_sivut
Siis DOHH. Miksi kysyt asiaa A kun tarkoitat asiaa B? No hyvä että löysit vastauksesi kuitenkin