FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Medlem
|
Har tittat lite på sajter som prisagenter och TV-tablåer och annat, som hämtar data från andra webbplatser.
Hur kodar man mest effektivt sånt? Har testat lite i php genom att öppna en url, läsa in den i en while-loop med fgets, och sedan välja ut information med php:s ereg-funktioner. Dessa använder ju regular expressions, men är de effektiva? Borde man göra det på något annat sätt med regexp? Mitt sätt fungerar iofs bra, men är tveksam att jag gör det på effektivaste sättet.. :unsure: Har någon en exempelkodsnutt att bjussa på? ![]() |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Mycket flitig postare
|
Citat:
|
||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Har WN som tidsfördriv
|
Dels är preg_* snabbare än ereg, och dels är perl snabbare än PHP på detta område. Detta var mina extremt stora kunskaper inom detta ämne.
![]() |
|||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Mycket flitig postare
|
Citat:
För att hämta in sidan kan du använda file_get_contents, den funkar bra. |
|||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Mycket flitig postare
|
För att plocka data från andra siter skulle jag inte använda php - där lämpar sig perl (som är designat för textbehandling) eller c (som man kan kompliera) bättre.
att använda regex kan lätt bli en mardröm också - det är bättre att använda redan existerande moduler och libs för det, för perl så rekommenderar jag HTML::Parser eller HTML::TokeParser som är guld värda ![]() |
||
![]() |
![]() |
![]() |
#6 | |||
|
||||
Mycket flitig postare
|
Citat:
Dessutom är det tillräckligt snabbt, det är inte själva sökningen i filen som är flaskhalsen utan det är hämtningen av filen som ska sökas. Här är ett litet test som jag gjorde precis på ett helt ooptimerat script samt ett helt ooptimerat regular expression. Hätmning av fil(från datorbutiken.com): 0.8221 s Hämta ut 56 poster med namn, länk samt pris: 0.0016 s , dvs 1.6 ms Hämtningstiden är 513 gånger större, dvs 51 300% mer. Det säger väl det mesta... En optimering av själva sökningen ger ingen reel prestanda(som märks). |
|||
![]() |
![]() |
![]() |
#7 | |||
|
||||
Klarade millennium-buggen
|
Jag har själv screenscrapat i mina dagar (länge sedan nu) men använde lite mer krångligare metoder.
Nu sitter jag på "andra sidan" och vill skydda en viss site från ss. Hur är bästa sättet att *försvåra* en ss? Alltså inte förhindra, för det går inte. Jag tänkte alternera outputen på olika sätt (utan att störa funktionalitet och design), men frågan är hur en sådan alternering skulle göras för att försvåra regex och andra parsningar? Tilläggas ska att siten är i xhtml vilket faktiskt i sig borde förenkla viss typ av ss (xmlparsning etc). :angry: Vad är det vanligaste att regexp går efter? Id'n? classnamn? n-te DIV'en i outputen? |
|||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Mycket flitig postare
|
Citat:
![]() |
||
![]() |
![]() |
![]() |
#9 | |||
|
||||
Klarade millennium-buggen
|
Citat:
Kanske några extra "dummy" divar, alternerande class-namn för css-klasserna/eventuellt id-namn, samt lite "vaskning" av divarna kanske borde få 10% av de intresserade ss'arna att inte orka fortsätta. Mer sätt? |
|||
![]() |
![]() |
![]() |
#10 | ||
|
|||
Klarade millennium-buggen
|
Använd olika namn på css-taggarna (slumpade dom baserat på dag tex).
Använd olika element, p, div, span ovs. Lägg in vissa bokstäver som bilder. Variera kodning latin-1/html-tecken. Kolla efter konstiga user-agents och fråga användaren med tex en javascriptpopup om han är en användare innan man får se den riktiga sidan. Släng in så att sidan den kör med redirects till sig själv ibland. Koda alltihopa i rot13 som en javascriptvariabel och avkoda det sedan och skriv ut det. Allt det här GÅR att knäcka.. men om man dessutom slumpar olika metoder mellan olika dagar... jag tror inte jag skulle orka / bry mig iaf :-) |
||
![]() |
![]() |
Svara |
|
|