![]() |
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:
|
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. |
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. |
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.
|
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. |
Citat:
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. |
Citat:
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. |
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.
|
Citat:
|
Citat:
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. |
Alla tider är GMT +2. Klockan är nu 17:10. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson