WN

WN (https://www.wn.se/forum/index.php)
-   Allmänt (https://www.wn.se/forum/forumdisplay.php?f=2)
-   -   Skapa egen prisagent (https://www.wn.se/forum/showthread.php?t=5191)

N!cklas 2004-12-27 22:08

Har en liten idé om ett ämne som skulle ha nytta av en prisagent typ prisjakt, kelkoo osv. Har inte en aning om hur jag kodar den själv, så den möjligheten är borta... Är det någon som har koll på hur de får in sina priser? Har läst att en del sker genom csv-filer eller liknande, men de har även spindlar/agenter som går över sajter och hämtar de uppgifter de vill ha. Var kan man hitta mer info om denna typ av spindel/agent?
Tacksam för alla svar...som berör ämnet ;-)

Jawn 2004-12-27 22:47

Kan använda regex (Regular Expressions) om du vill.

http://gnosis.cx/publish/programming...pressions.html

N!cklas 2004-12-27 22:59

Tack för tipset! Tyvärr fattade jag inte mycket av det jag läste... så jag får läsa vidare och klura lite

Tar gärna emot fler tips

PeterM 2004-12-28 07:37

Ah, ett ämne jag har en del insikt i.

Prisuppgifter hämtas precis som du hört antingen via prislistor som företaget tillhandahåller eller genom att man skickar en spindel/crawler/agent (kärt barn...) att läsa av sidor i företagets webshop. För att få med så många företag som möjligt så måste man antagligen använda båda metoderna, fördelningen för de olika metoderna är för Buggys del ungefär 50-50.

Större företag är vanligen bra på skapa och ge tillgång till prislistor som är enkla att läsa av automatiskt. Mindre företag saknar tyvärr ofta teknisk kompetens för detta, eller har så dålig struktur på sina databaser att de data man kan plocka ur dem är oanvändbar. Skräckexemplet är företag som inte använder någon databas, utan har använt Word för att skapa sidor till sina webshoppar. Den "html" som Word genererar kan man bli blind av...

Det finns en hel del att läsa om agentteknik, men det mesta är av helt akademisk natur. En agent är ett program som vilket annat som helst och inte särskilt märkvärdigt. De går att koda i vilket språk som helst, men vissa språk är givetvis bättre lämpade än andra. Agenter måste specialkodas för sitt syfte. En all-in-one agent som kan hantera allt från begagnade bilar till väderprognoser finns inte. Någon egentlig intelligens har de givetvis inte, utan reagerar bara på de data de behandlar utifrån villkor man ställer upp. Vissa menar att en agent ska ta egna initiativ för att vara en "egentlig" agent. Om du till exempel startar ditt mailprogram och kollar din mail varje vardag under lunchen så skulle en agent kunna notera det och fråga om du vill automatisera det.


En crawlers/agents datainhämtning är enkel att beskriva med lite pseudo-kod. Kan givetvis göras på tusen andra sätt.

[Start]
Definiera en startadress.
Definiera vad som utgör intressant data (ofta med hjälp av regexp, precis som Jawn skriver i sitt inlägg).
Definiera hur länkar att följa ska se ut (regexp även här).

[Inledning]
Sidan på startadressen hämtas.
Identifiera och spara intressant data.
Identifiera och spara länkar att besöka härnäst.

[Loop]
Hämta sida från lista över adresser.
Identifiera och spara intressant data.
Identifiera och spara länkar att besöka härnäst.
[/Loop]

[Slut]
Avsluta när listan över adresser att besöka är tom eller något annat villkor är sant.


Det var grundkursen i alla fall. :)

Helix 2004-12-28 08:26

Välkommer Peter! Trevligt att ha dig i forumet.

N!cklas 2004-12-28 09:12

Peter - det var nog det mest uttömmande svar jag någonsin fått på ett forum!! Tack!

Instämmer med MusikGuru att det är trevligt att ha dig här. Buggy är ett
givet bokmärke och en sajt att besöka så fort man ska handla dataprylar

jimmie 2004-12-28 10:16

Som det redan har omtalats här så är det regular expressions som gäller. Jag rekomenderar PCRE (Perl Compatible Regular Expressions) för de är effektivare. Jag skulle rekomendera att om du vill göra allt så optimerat som möjligt att du köper en bok som tar upp ämnet regular expressions.

Om man vill skapa en tjänst likt pricerunner så _måste_ man kan regular expressions. Dels för att hämta prisinformationen och dels för att kunna hämta produktinformationen från tillverkarens hemsida. Mycket energi måste också läggas på felhantering så att ett litet fel inte förstör hela uppdateringen.

Kan också berätta att jag är i fasen att utveckla en prisagent. Har tidigare gjort en prototyp i ASP men nu ska jag göra en "live" version i PHP. Jag har domänerna prisagent.com och prisagent.se

Får jag fråga vilket språk buggys agent är i? Vet att hemsidan är i PHP men tänkte kanske att agenten var skriven i något "vanligt" programmeringsspråk som t.ex. Delphi eller C++.

PeterM 2004-12-28 15:39

Buggy använder PHP till precis allt. Prestanda skulle kunna förbättras med ett språk som kompileras, men slipper jag hela kompilerings-cykeln så tar jag gärna en prestanda-hit. En normal refresh av samtliga priser tar ändå inte mer än fem minuter, och då är det oftast nätverket som är flaskhalsen.

grazzy 2004-12-28 16:54

För att ge mig in i debatten ;)

Jag måste avråda något från att använda regexp då det är betydligt svårare att definera bra regexp (såvida man inte är superduperduktig på det, och då har jag ändå sysslat med regexps etc i nästan fyra år). Istället finns det för framförallt Perl superbra verktyg för att parsa just HTML.

Verktyget som jag använder är HTML::TokeParser på http://search.cpan.org/~gaas/HTML-Parser-3...L/TokeParser.pm

Nu är det kanske inget alternativ om man inte vill lära sig perl, men för dem med möjligheter till det så rekommenderar jag verkligen den här metoden över tex att parsa själv med regexp av flera anledningar.

- Tiden det tar att utveckla.
- Stabiliteten, om du skriver ett script som läser alla <a>-taggar så kan du vara säker på att det alltid funkar även om tex en tagg inte är stängd.
- Flexibiliteten.

Mina .2 kronor.

PeterM 2004-12-28 22:43

Alla sätt är bra, osv. För egen del har jag inte ens skrivit någon parser utan kastar bort precis all html förutom just länkar i ett första pass. I andra passet identifieras priser och i tredje passet slås priser samman med produktnamn och annan tillgänglig data till en produkt att lägga in i databasen. Jag behöver sällan över 10 rader kod för att åstadkomma detta.

Alex 2004-12-29 02:19

Annars kan man jävlas med PeterM och skicka en Crawler till hans site.

Det kan man göra med xmlhttp (i asp). Då plockar man ut allt man vill ha, och strippar bort resten med regexp.

;)

N!cklas 2004-12-29 08:15

Citat:

Annars kan man jävlas med PeterM och skicka en Crawler till hans site.
Varför då...?

Inser att mina kunskaper troligtvis inte räcker till, men som tur är finns det andra som har kunskaper...

jimmie 2004-12-29 10:11

Citat:

Originally posted by Zn4rK@Dec 29 2004, 03:19
Annars kan man jävlas med PeterM och skicka en Crawler till hans site.

Det kan man göra med xmlhttp (i asp). Då plockar man ut allt man vill ha, och strippar bort resten med regexp.

;)

Varför skulle man? Är ju dessutom olagligt skulle jag tro. Om man ändå ska lägga ned tid på en sida så kan man lika gärna göra det rätt istället för att snylta på andra.

Alex 2004-12-29 10:17

Varför inte?
Spara en massa tid då PeterM har gjort grundjobbet.

Nä skojar bara. jag hoppades att ni skulle förstå att mitt inlägg var fyllt av ironi och sarkasm.

Du kan ju göra som de flesta har sagt att använda regexp.

Om du inte kan använda regexp så finns det
verktyg som är skit bra:
http://www.regexbuddy.com/
och:
http://www.topshareware.com/RegexBud...load-15609.htm för nerladdning.

Ha en trevlig påsk och ett glad nytt år.

nifer 2004-12-31 15:10

Citat:

Originally posted by PeterM@Dec 28 2004, 16:39
Buggy använder PHP till precis allt. Prestanda skulle kunna förbättras med ett språk som kompileras, men slipper jag hela kompilerings-cykeln så tar jag gärna en prestanda-hit. En normal refresh av samtliga priser tar ändå inte mer än fem minuter, och då är det oftast nätverket som är flaskhalsen.
Naturligtvis använder man mmcache för att slippa det ;)

//Jonas

grazzy 2004-12-31 16:11

CPUhitten är rätt så marginell jämfört med tiden det tar att ladda hem dokument osv.
MMcache är lite lurigt om man inte vet vad man gör..

FredrikMH 2005-01-01 20:49

Visst går det att crawla Peters sida och "sno" hans information. Men likaså kan han förstöra hela din sajt genom att ge din agent en annan sida, det hade jag tyckt var skoj, där är bara fantasin som sätter gränser :ph34r:

nifer 2005-01-04 07:59

Lite kommentarer:

Innan jag körde mmcache var Apache den stora prestanda boven på prisjakt, dvs PHP:n tog mycket kraft att kompilera. Efter MMCache så märks knappt apache och php av :)

Sen har jag ett tips till alla som funderar på att skapa shoppingagenter, ta kontakt med någon som redan har en ;)

//Jonas

Jonas 2005-01-04 08:28

Citat:

Originally posted by nifer@Jan 4 2005, 07:59
Lite kommentarer:

Innan jag körde mmcache var Apache den stora prestanda boven på prisjakt, dvs PHP:n tog mycket kraft att kompilera. Efter MMCache så märks knappt apache och php av :)

Sen har jag ett tips till alla som funderar på att skapa shoppingagenter, ta kontakt med någon som redan har en ;)

//Jonas

Är det Turck MMCache ni snackar om?

Verkar vara något att ha...

PeterM 2005-01-04 09:23

mmCache är trevligt, ja. Det (och andra acceleratorer) har räddat många sidor, särskilt de som har väldigt aktiva forum. Jag borde dock kanske säga att mmCache VAR trevligt, eftersom det inte uppdaterats på över ett år då upphovsmannen fick jobb hos Zend för att arbeta på deras kommersiella accelerator.

Det finns dock ett nytt projekt som kanske kan bli något. Ett gäng typer gjort en fork av mmCache (opensource, yadda yadda) som de kallar eaccelerator. De har fixat ett gäng buggar som man kan råka på om man kör PHP 5 och senare versioner av PHP 4. De huserar på sourceforge.net.

HenrikAI 2005-01-10 10:31

Bara en fundering jag har, eftersom jag själv funderar på att göra en egen agent..

Är det ur ett juridisk perspektiv okej att läsa in andras sidor och plocka ut viss information (t.ex. pris)?

Jag antar att det kan jämställas med ett citat (dvs. det är okej att citera en liten del av sidan så länge man upplyser om källan) - men hur är det med själva scanningen av sidan (speciellt om det görs regelbundet)?

daniel234 2005-01-10 14:53

Jag har ett tag funderat på att göra en prisagent inom ett speciellt område....eftersom jag endast kan grunderna inom html m.m så har jag tänkt att jag kommer aldrig klara av att göra en sådan sida. Men är det någon som känner för att lyssna på min ide och kanske samarbeta, hjälpa mig med lite kod m.m så skicka ett pm!
Jag är inte så insatt i det här med prisagenter så min ide kanske inte är bra eller redan finns?

/Daniel

andla 2005-01-11 10:26

Undrar om man i framtiden kommer se mera av att priset står i en gif bara för att försvåra prisagenter att skanna av sidan.

/Andla

b_andersson 2005-01-11 10:40

Citat:

Originally posted by andla@Jan 11 2005, 10:26
Undrar om man i framtiden kommer se mera av att priset står i en gif bara för att försvåra prisagenter att skanna av sidan.

/Andla

Varför skulle man vilja göra det? Så länge man har bra priser så tjänar man enbart på att bli indexerad av prisagenterna, iaf enligt dom erfarenheter jag har av buggy/pricerunner/osv.

//Björn

aikon 2005-01-11 11:35

Citat:

Citat:

Undrar om man i framtiden kommer se mera av att priset står i en gif bara för att försvåra prisagenter att skanna av sidan.

/Andla

Varför skulle man vilja göra det? Så länge man har bra priser så tjänar man enbart på att bli indexerad av prisagenterna, iaf enligt dom erfarenheter jag har av buggy/pricerunner/osv.

Det är förstås de med dåliga priser som vill göra så. B)

Citat:


Bara en fundering jag har, eftersom jag själv funderar på att göra en egen agent..

Är det ur ett juridisk perspektiv okej att läsa in andras sidor och plocka ut viss information (t.ex. pris)?

Jag antar att det kan jämställas med ett citat (dvs. det är okej att citera en liten del av sidan så länge man upplyser om källan) - men hur är det med själva scanningen av sidan (speciellt om det görs regelbundet)?

Undrar lite samma sak. Buggy, prisjakt osv, har ni något avtal med sajterna eller parsar ni bara sidorna? Om avtal, räcker det med ett mail och ett OK, eller skrivs det något? Vill de ha ersättning?

Eller är det en kombination av alla metoder?

PeterM 2005-01-13 08:47

Citat:

Är det ur ett juridisk perspektiv okej att läsa in andras sidor och plocka ut viss information (t.ex. pris)?
Jadu, om någonting verkligen är lagligt vet man egentligen bara först när någon tagit en till domstol och fallet antingen vägras prövning eller man får ett domslut som inte går att överklaga längre. :)

Några prejudikat har jag inte snavat över, men ett enstaka pris som sådant är fakta och jag kan inte se hur det skulle kunna skyddas. En sammanställning av uppgifter kan möjligen ha katalogsskydd, men det skulle jag inte satsa några pengar på. Att häva verkshöjd bör rimligen bara leda till en utskrattning. Återstår att se om något intressant kan komma av Blocket vs. Allaanonnser om det går längre än offentlig armbrytning, även om parallellerna är långt från hundraprocentiga.

Parentes. Blocket kunde droppa ett mail till Tradera med flera där de nämner sin avsikt att blockera allaanonnser, hakar de på så är allaanonnser vips så gott som irrelevanta.

Citat:

Citat:

Undrar om man i framtiden kommer se mera av att priset står i en gif bara för att försvåra prisagenter att skanna av sidan.
Varför skulle man vilja göra det? Så länge man har bra priser så tjänar man enbart på att bli indexerad av prisagenterna, iaf enligt dom erfarenheter jag har av buggy/pricerunner/osv.

Precis, de flesta företag är tvärtom mer intresserade av att underlätta avläsningen så att de maximerar möjligheten till exponering.

Citat:

Undrar lite samma sak. Buggy, prisjakt osv, har ni något avtal med sajterna eller parsar ni bara sidorna? Om avtal, räcker det med ett mail och ett OK, eller skrivs det något? Vill de ha ersättning? Eller är det en kombination av alla metoder?
Termerna jag brukar använda är aktivt och passivt medverkande för företag som tillhandahåller prisuppgifter respektive de där priser hämtas från websidor. Företagen som medverkar aktivt har uppenbarligen uttryckt sin önskan om att medverka, så inga problem där. Till de passivt medverkande företagen brukar jag skicka ett standardmail där jag nämner att de lagts till som passivt medverkade, och om detta inte är ok så kan de höra av sig så plockas de bort omgående. Inget företag har avböjt att medverka hittills. Några papper har jag aldrig skrivit under (det har aldrig ens nämnts), och hoppas slippa det så länge som bara möjligt.

Ersättning till medverkande företag? Jösses nej, ska någon part ha ersättning så är det jag! :)

nifer 2005-01-13 22:37

Citat:

Originally posted by aikon@Jan 11 2005, 12:35
Undrar lite samma sak. Buggy, prisjakt osv, har ni något avtal med sajterna eller parsar ni bara sidorna? Om avtal, räcker det med ett mail och ett OK, eller skrivs det något? Vill de ha ersättning?
Nya butiker ställer i Princip alltid upp på att skapa en speciell prisfil för att man skall kunna indexera dem enklare. Att finnas med hos Prisjakt innebär att man får 1000-tals besökare!
Att inte finnas med innebär bara att man får mindre besökare :rolleyes:

De flesta hör av sig och vill vara med nuförtiden :D

//Jonas

nifer 2005-01-13 22:42

Citat:

Originally posted by andla@Jan 11 2005, 11:26
Undrar om man i framtiden kommer se mera av att priset står i en gif bara för att försvåra prisagenter att skanna av sidan.

/Andla

Siba hade så innan, fast jag indexera dem endå ;)

(nu kan man ladda ner deras prislistor från tradedoubler!)

//Jonas


Alla tider är GMT +2. Klockan är nu 03:51.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson