slacky Skrevet 7. november 2011 Del Skrevet 7. november 2011 (endret) Jobber med et lite script for å logge inn på en webside, og utføre noen enkele faste oppgaver for meg.. Jeg klarer å logge inn, og lese HELE html-koden med det første, men når jeg skal navigere meg til en ny side får jeg bare brøkdeler av HTML-koden i output. Script: # -*- coding: utf-8 -*- import mechanize def Bot(password, username, siteUrl): br = mechanize.Browser() br.open(siteUrl) br.select_form(nr=0) br["username"] = username br["password"] = password response = br.submit() html = response.read() #om jeg printer denne får jeg ALL html-kode. print ">>> Logged on!" openNews = br.open("http://www.minwebside.no/news") openNews html = openNews.read() print html #DENNE PRINTER IKKE ALL HTML-KODE.. if __name__ == '__main__': Bot("P4ssWorD", "tROOP4H", "http://www.minwebside.no") Endret 9. november 2011 av tROOP4H Lenke til kommentar
fleskesvor Skrevet 7. november 2011 Del Skrevet 7. november 2011 Har lagd en del bot-er i perl og i min erfaring er det er ganske vanlig at du når en side med en redirect etter innlogging på sider med cookie-basert innlogging. Det er som regel her cookien settes og de inneholder sjelden stort av html. Kan det være noe sånt som skjer? Lenke til kommentar
torbjørn marø Skrevet 8. november 2011 Del Skrevet 8. november 2011 PhantomJS er et ypperlig verktøy til slike ting! Skriv koden i JavaScript eller CoffeeScript (ligner med på Python), og kjør med PhantomJS som i praksis er en usynlig browser. Lenke til kommentar
slacky Skrevet 8. november 2011 Forfatter Del Skrevet 8. november 2011 fant ut en løsning for dette, men jeg skjønte egentlig ikke problemet. Så scriptet fungerer rimelig bra, men har fremdeles noen småbugs, som crasher scriptet. Men det kommer seg Lenke til kommentar
slacky Skrevet 9. november 2011 Forfatter Del Skrevet 9. november 2011 (endret) Vel har et til spørsmål (ser ikke nødvendighet i å starte opp nytt topic, er relevant i forhold til koden). Jeg ønsker nå å hente ut f.eks askje-kurser fra en webside, kursen som alle vet, den er ikke statisk. Dette er veldig lett i php, men php er laget for web. Da går jeg frem og finner koden som ligger rundt: F.eks <div align="right">Endring idag:</div> <div style="float:right;">+1.3%</td> i php går vi frem med preg_match eller preg_match_all, og løser det med regex. Først henter vi da kildekoden (html).. Kildekoden henter jeg enkelt ved hjelp av mechanize (kan bruke urllib også) site = br.open("http://www.hegnar.no/tickersok/?ticker=AMD") html = site.read() html inneholder nå kildekoden, hvordan henter jeg den lille teksten som ikke er staisk? Edit: Der var den løst også, ved å ta i bruk regex og findall Endret 9. november 2011 av tROOP4H Lenke til kommentar
snippsat Skrevet 9. november 2011 Del Skrevet 9. november 2011 (endret) tml inneholder nå kildekoden, hvordan henter jeg den lille teksten som ikke er staisk? Edit: Der var den løst også, ved å ta i bruk regex og findall Regex er en dårlig kombinasjon med html og xml. Dette gjelder alle språk. Et artig svar av bobince et av de mest populære svar på stackoverflow. For python er det 2 veldig gode parsere,BeautifulSoup og lxml Ja det går og hente ut enkelte verdier med regex,har gjort dette mange ganger selv. Men "webscraping" blir veldig mye enklere når man lærer seg en god parser,som igjen kan kombiners med regex. Et eksempel på en mix av BeautifulSoup/urllib/regex du kan se på her. https://www.diskusjon.no/index.php?showtopic=1307173 Endret 9. november 2011 av SNIPPSAT Lenke til kommentar
zotbar1234 Skrevet 10. november 2011 Del Skrevet 10. november 2011 Et artig svar av bobince et av de mest populære svar på stackoverflow. Svaret er riktig og fantastisk For python er det 2 veldig gode parsere,BeautifulSoup og lxml Kanskje slike verktøy som Twill kan tilby noe litt mer ferdig enn mating av xpath-er til cElementTree/lxml? (det er mer et spørsmål heller enn et forslag). Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå