Avatar billede jammerlab Nybegynder
31. august 2010 - 11:52 Der er 5 kommentarer og
1 løsning

Hvilken løsning ville i bruge til en crawler?

Hej derude... jeg har siddet og prøvet at lave en prototype af en crawler... Det fungere sådan set også, men jeg støder ind i problemer når det bliver lidt mere avanceret.

Jeg kan sagtens crawle en hjemmeside for alle links eller alle billeder... men når prøver at få enkelte elementer ud på en side bliver det lidt svært.

Forstil jer en hjemmeside hvor man kan søge på produkter. Jeg har taget et eksempel her på bøger. Det jeg vil havde ud er selvfølgelig billede, titel, forfatter, pris. HTML klumpen ser således ud:

<li>
<b>Historisk sandhed og narrativ sandhed : den psykoanalytiske fortælling</b>
&nbsp;&nbsp;
<span class="offer">e-bog&nbsp;DOWNLOAD
</span>
<br>
<div style="float: right; position: relative;" class="buttoncontainer">
<a onclick="if( checkCookies() ){Add2ShopCartSpot(document.OrderItemAddFormSpot, '');}else{ alert( ''); } return false;" href="" class="shop">
<span class="basket">Læg i kurv</span>
</a>
</div>
<div>9788773326657, 1900, pdf, Kr. 19,00</div>
<a class="arrow" href="product-10001-10002-1939150-100">Læs mere</a>
</li>

Jeg har prøvet mig frem med preg_match_all men syntes det bliver alt for langhåret da som jeg kan forstå det så skal det regulære udtryk være ret specifikt.

Er der andre måder? Eller hvordan ville i løse sådan en opgave. Ydermere vil der være sidder som kun viser 10 produkter pr. side så der skal også crawles ind over de andre resultater... hvordan ville i gøre det?

- Og er vi enige om at man (hvis man skal ind over flere forskellige hjemmesider) skal havde en "profil" for hver side?

Mvh Ronnie
Avatar billede jammerlab Nybegynder
31. august 2010 - 11:58 #1
Jeg har taget udgangspunkt i denne tutorial:

http://vision-media.ca/resources/php/create-a-php-web-crawler-or-scraper-5-minutes

og ændret på det regulære udtryk... men som sagt så syntes jeg den bliver langhåret for at hive for eksempel et produkt ud...
Avatar billede repox Seniormester
31. august 2010 - 14:11 #2
Hvad er årsagen til at du vil bruge crawler til sådan noget, når det nu er lige så nemt at spørge om de har et produktfeed tilgængeligt som du må anvende? Du skal alligevel have tilladelse til at gengive deres indhold.
Avatar billede jammerlab Nybegynder
31. august 2010 - 14:38 #3
Nu er det mere et proof of concept jeg har gang i, og for at prøve at lave en sådan løsning. Jeg er godt klar over de juridiske aspekter af sagen :)

Jeg vil til enhver tid fortrække produktfeeds, API, adgang til databasen osv... men det kan være der ville komme en aftale på plads med en som ikke kan tilbyde sådan en løsning.
Avatar billede intenz Novice
01. september 2010 - 15:26 #4
Hvis du vil scrape selve kildekoden er regular expressions vejen frem, og ja, det kan hurtigt blive langhåret.

Det bliver endnu bedre når man endelig er færdig, og ejeren af siden så beslutter at en klasse f.eks. ikke skal hedde 'offer' men i stedet 'offer_download'. Så bryder det hele sammen, og man kan starte igen.

Du bør have en eller anden form for feed, hvis de ikke kan sætte noget ordenligt op, så i det mindste kommasepareret eller andet der er relativit pålideligt og frit for HTML markup.

At scrape kildekoden for den slags er sidste udvej, og bør undgås hvis overhovedet muligt.
Avatar billede jammerlab Nybegynder
03. september 2010 - 23:13 #5
Ja jeg er helt med på at det er sidste løsning... jeg er ikke skide stærk til regulære udtryk, men har dog rodet lidt med det... har du/i nogle bud på hvordan sådan et udtryk kunne se ud for at isolere informationerne fra den stump HTML jeg har smidt i toppen?
Avatar billede jammerlab Nybegynder
26. oktober 2010 - 09:25 #6
Intet nyt under solen...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester