Avatar billede KennethBL Nybegynder
29. november 2013 - 08:18 Der er 8 kommentarer

Skrap pris og produktbillede af URL

Hejsa

Jeg har i noget tid tumlet med et par problemer med et projekt jeg laver.

Det er desværre på engelsk, da jeg har bedt om hjælp på et andet forum uden held, men mon ikke i forstår det alligevel? :-)

På forhånd tak for din tid.



First of, let me say that I'm a Frontend engineer, with limited knowledge to PHP. I can make simple webservices to complete my projects, but I'm not near calling myself a Backend developer. :-)

I'm making a website in my spare time, where users can enter a URL of a product and the service, made in php, returns the 5 largest images on the page, sorted by size. The largest image is, usually, the correct image. Mark this as half done.. :-)

However, now I need to get the price that match the product, not just any price on the page. A lot of webshops lists alternative or related products with prices as well, so there could be numerous instances. I could bubble up the Dom three and match the first price that's inside the same parent as the selected image. But is that the way to go?

How do I track down the main content of a page, so my image getter function is more precise, and the price is correct? As I don't know the markup, how would I recognize the main content?

As for getting prices, I tried getting all elements with indexOf price in class, which works in 90% of the time. But that gives me, as mentioned before, all prices - not THE price.

So, long story short. How do I: 1. recognize main content of a webpage, without knowing it's markup? 2. Or find the price that match the image selected as the right one?
Avatar billede repox Seniormester
29. november 2013 - 08:38 #1
Spørg efter/anvend et produkt feed i stedet?
Avatar billede KennethBL Nybegynder
29. november 2013 - 09:33 #2
Hvad mener du med produkt feed?

Jeg antager at du mener at jeg skal bruge en service? Denne feature skal virke på kryds af alle websites, det vil sige coop.dk, edbpriser.dk, såvel som harolds.com, ikea.com osv., så vel som en lillebitte privat webshop. Så længe der er et produkt med en pris, så skal mit system kunne fange det.
Avatar billede repox Seniormester
29. november 2013 - 09:47 #3
Så det er fordi du vil udføre scraping og gengive data?
Avatar billede keysersoze Guru
29. november 2013 - 10:12 #4
Kort sagt - det kan ikke lade sig gøre. Du kan ikke lave en generisk engine til at aflæse specifikt indhold på tværs af alle websites uden at kende til den enkelte shops markup - enten må som allerede foreslået spørge om butikken har en form for service eller feed du kan benytte eller også må du kode specifikt til hvert website.
Avatar billede repox Seniormester
29. november 2013 - 10:18 #5
^^
Avatar billede KennethBL Nybegynder
13. januar 2014 - 12:21 #6
Det er vidst et for kort svar, imho.

90% af alle webshops skriver en class eller id, på en container med prisen som indeholder noget med "price". Så har du prisen. Så kigger du på om samme container indeholder information om currency. Hvis den ikke gør, så må man lave en beregnet currency baseret på domænet, ud fra nogle forudantagelser. F.eks. ".de", ".se" og ".fr" mv. er Euro, ".dk" er kroner og ".co.uk" er engelske pund.

Så skal man finde produktbilledet som hænger sammen med den pris man har fundet. Man bubler op af DOM-træet indtil man finder en container som indeholder mindst ét billede der er større end 400x400px (et forslag), som vi antager er et billede af et produkt.

Derefter skal produkets titel findes, og er den ikke i den samme container hvor vi fandt biledet, så bubler vi længere op, indtil vi finder det. Vi kigger efter h1, h2, h3 i den rækkefølge. Hvis det ikke returnere noget, så tager vi title-tagget som produktets title, som i de fleste tilfælde også er det produkt man er inde på.

... Det er muligt, det er jeg sikker på. Jeg er bare ikke PHP-programmør, så jeg aner ikke hvor jeg skal starte henne, eller om denne her approach er ueffektiv i forhold til hvad man ellers kan gøre. Men det er da muligt, det er jeg sikker på.
Avatar billede keysersoze Guru
13. januar 2014 - 12:56 #7
Men allerede dér tager du udgangspunkter i en masse hvis'er du som udgangspunkt ikke lød interesseret i - og enhver programmør med bare lidt kundskaber kan lave dit program hvis man fx tager udgangspunkt i de største systemer herhjemme (fx dandomain, goldenplanet, scannet...), finder alternativer såfremt fx titel ikke findes og ellers glemmer de custom webshop der findes, ikke tager højde for nye og opdaterede systemer osv. Jeg ville bare over tid ikke stole på det.

Hvis du var min chef og satte mig til det ville min tilgang blive at lave nogle aflæsningsskabeloner for de her store systemer og så custom tilpasninger til dem der ikke passer ind i en skabelon - det kunne betyde at der kun skulle bruges 2 sekunder på at sætte en ny side op ved valg af eksisterende skabelon eller at der skulle bruges en del timer på at lave en ny skabelon.

Og jo, denne approach er bestemt ueffektiv i forhold til hvad man ellers kan gøre; du har ingen sikkerhed for at det der kommer ud er korrekt, din crawler kan blive bannet (ikke alle er glade for screenscrapers) osv - alternativet hedder feeds.
Avatar billede repox Seniormester
13. januar 2014 - 14:17 #8
Udover keysersozes gode pointer er der jo også det aspekt at det ikke er lovligt at gengive de data du scraper uden tilladelse fra de steder du scraper fra.
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