Kom ihåg mig?
Home Menu

Menu


Vilken Scraping-teknik är bäst?

 
Ämnesverktyg Visningsalternativ
Oläst 2011-03-30, 10:39 #1
Martin™ Martin™ är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2007
Inlägg: 345
Martin™ Martin™ är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2007
Inlägg: 345
Standard Vilken Scraping-teknik är bäst?

Vilken eller vilka metoder skulle du säga är bäst för att scrapa information från hemsidor?

1# Regex
2# XPath
3# Vet-ej-vad-den-heter*

Vet-ej-vad-den-heter*=
Citat:
"teknik för o skrapa sidor gjord i PHP5 som baserar sig på Curl samt en CSS selector motor liknande den i jQuery som gör att jag kan hantera buffern från curl anropet som vilken DOM baserad sida jag vill.. Ovanpå det hakar jag på en template motor för varje resturang site som definerar vad skrapen letar efter."
Martin™ är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-03-30, 10:56 #2
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Magnus_A Magnus_A är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: May 2006
Inlägg: 2 604
Beror helt på hur sidan ser ut och framförallt hur sidan ändras. Är det uppgifter som smyger in sig i långa textsjok kan regexp vara bättre och mer robust mot ändringar i omkringliggande text.
Handlar det om data strukturerad i tabeller och liknande är dom-baserade upplägg kanske bättre.
Viktigast är att du har bra varningssystem som talar om att sidan ändrats på ett sätt som gör att det är osäkert att du får ut rätt värden med din teknik.
Magnus_A är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-03-30, 11:09 #3
emilvs avatar
emilv emilv är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Feb 2004
Inlägg: 1 564
emilv emilv är inte uppkopplad
Bara ett inlägg till!
emilvs avatar
 
Reg.datum: Feb 2004
Inlägg: 1 564
Definiera "bäst". Tänk efter vad som är prioriterat och välj den metod som passar bäst.

* Snabbt att skriva kod för varje sida
* Hastighet
* Minnesanvändning
* Processoranvändning
* Adapterbar, dvs passsar många hemsidor med så få ändringar som möjligt
* Automatiskt adapterbar, dvs letar själv upp vad som är rätt innehåll på sidan
* Många vitt skilda typer av sidor eller flera som liknar varandra?
* Pris (om du hyr in någon, annars tid)
* Inlärningströskel (om du gör det själv och inte har kunskapen)

Det finns säkert flera faktorer som spelar in i valet av teknik.
emilv är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-03-30, 12:19 #4
Bjorne Bjorne är inte uppkopplad
Flitig postare
 
Reg.datum: Sep 2009
Inlägg: 374
Bjorne Bjorne är inte uppkopplad
Flitig postare
 
Reg.datum: Sep 2009
Inlägg: 374
XPath är bättre än att bara använda reguljära uttryck. I nyare versioner av XPath finns dessutom inbyggt stöd för reguljära uttryck så teknikerna står inte i motsatsförhållande till varandra. Teknik #3 som du nämner som använder sig av css-selektorer är sannolikt ett lager ovanpå XPath eftersom det är ganska lätt att konvertera css till xpathuttryck.
Bjorne är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-03-30, 16:53 #5
pelmereds avatar
pelmered pelmered är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2010
Inlägg: 1 342
pelmered pelmered är inte uppkopplad
Har WN som tidsfördriv
pelmereds avatar
 
Reg.datum: May 2010
Inlägg: 1 342
Jag har gjort en likande sak för något år sedan. Jag använde då cURL + regex, men jag vet inte om det är det bästa.

Det bästa och enklaste är väl att du antingen ansluter direkt till deras databas(vilket kanske inte är så troligt att du får) eller att de kan spotta ut informationen du vill i ett XML-dokument eller likande som du kan parsa med t.ex. SimpleXML. Du behöver ju ändå ha tillåtelse för att scrappa så det kanske inte är allt för svårt att fixa XML-lösningen om du kan fixa den åt dem. Det är den enklaste och den bästa lösningen i längden.
Jag har stött på en del problem när jag scrappat direkt ur HTMLen. Vissa sidor ändras ganska ofta och innehållet kan skilja väldigt mycket vilket gör att ditt skript då kommer misslyckas med att hämta datan. Det gör att du måste underhålla skriptet regelbundet vilket gör att du aldrig kan släppa det helt om det är viktigt att det fungerar.
pelmered är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-03-30, 17:00 #6
emilvs avatar
emilv emilv är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Feb 2004
Inlägg: 1 564
emilv emilv är inte uppkopplad
Bara ett inlägg till!
emilvs avatar
 
Reg.datum: Feb 2004
Inlägg: 1 564
Citat:
Ursprungligen postat av ITisGood.se Visa inlägg
Du behöver ju ändå ha tillåtelse för att scrappa
Nej. Det är helt tillåtet att läsa av andras sidor. Hur man sedan använder informationen regleras bland annat av ifall den täcks av upphovsrätt, personuppgiftslag eller liknande. Men det finns dels andra användningsområden än att bara återpublicera det man läst in och dels material som inte faller inom upphovsrätten.

En seriös webbskrapare lämnar en identifierbar user-agent och respekterar robots.txt så att sajtägaren kan göra opt-out. Det är inte lag på det, men en god sed.
emilv är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-03-30, 19:13 #7
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Citat:
Ursprungligen postat av Martin™ Visa inlägg
Vilken eller vilka metoder skulle du säga är bäst för att scrapa information från hemsidor?

1# Regex
2# XPath
3# Vet-ej-vad-den-heter*

Vet-ej-vad-den-heter*=
PHPQuery kan du nog titta på för #3.

Regex är krångligast men flexbilast. PHPQuery är väldigt enkelt att lära sig och de flesta har iallafall lite koll på hur det ska användas, de flesta med någon webberfarenhet har ju använt sig av jquery selektorer.

För andra språk, som t ex Python eller Java, finns rätt bra och mer utbyggda scraping bibliotek - men för PHP har iallafall inte jag hittat något intressant.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-03-31, 19:19 #8
dAEks avatar
dAEk dAEk är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Dec 2006
Inlägg: 678
dAEk dAEk är inte uppkopplad
Mycket flitig postare
dAEks avatar
 
Reg.datum: Dec 2006
Inlägg: 678
Utan att gå in på vad som är bäst tycker jag att någon form av parser som kan gå igenom DOM-trädet är att föredra. Skriver man en screen-scraper får man vara beredd på att sidorna ändras titt som tätt och då är det verkligen inge kul att sitta med en massa regex.
dAEk är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-03-31, 19:34 #9
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Citat:
Ursprungligen postat av dAEk Visa inlägg
Utan att gå in på vad som är bäst tycker jag att någon form av parser som kan gå igenom DOM-trädet är att föredra. Skriver man en screen-scraper får man vara beredd på att sidorna ändras titt som tätt och då är det verkligen inge kul att sitta med en massa regex.
Det bör väl påpekas att det inte är särskilt ovanligt med en inkorrekt html-struktur.
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-03-31, 22:55 #10
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Citat:
Ursprungligen postat av dAEk Visa inlägg
Utan att gå in på vad som är bäst tycker jag att någon form av parser som kan gå igenom DOM-trädet är att föredra. Skriver man en screen-scraper får man vara beredd på att sidorna ändras titt som tätt och då är det verkligen inge kul att sitta med en massa regex.
Jag vet inte riktigt hur stor erfarenhet du har av scraping - men utifrån min erfarenhet är det tvärtom. Man blir mycket lättare beroende av korrekt och samma struktur i elementen om man kör en DOM parser snarare än en (lite öppen) regex. Däremot skriver jag mycket hellre en helt straight forward CSS selektor än pillar med bakåtreferenser osv. Däremot finner jag det omständigare än regex med de flesta sätten att traversera dom-trädet.

Det är från att ha haft igång scrapers för diverse funktioner över iallafall 5+ år mot ett bra antal väldigt olika källor. Sajter byter hela systemen oftare än de byter HTML:en lite för mycket i vilket fall, i min erfarenhet.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 06:19.

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