Hjälp, råd & tips för att plocka ut html data från en sajt (crawler kanske?)

Permalänk
Inaktiv

Hjälp, råd & tips för att plocka ut html data från en sajt (crawler kanske?)

Godkväll.

Jag ska hjälpa en bekant med att skapa en lite fräschare och mer strukturerad webbplats.
Han har i dagsläget en ca 8-9 år gammal webbsajt helt statisk i html utan något admin, databaser eller dylikt.

På en av undersidorna finns cirka 3.000st artiklar han manuellt genom åren lagt till, det är en oändligt lång table som han byggt på bara med en liten bild, description och pris i varsin kolumn.
Det har blivit en oooooerhört lång lista nu. Och nu ska jag hjälpa honom med hans nya sajt och söker råd och tips om hur fasen jag så enkelt och smidigt kan plocka ut denna informationen och stoppa in den i en databas.

Huvudvärken ökar i takt med att jag börjar inse att jag kanske manuellt får sitta och pilla in varenda artikel i databasen.... Alla tips uppskattas väldigt ömt och varmt. Tack!

Permalänk
Inaktiv

Enklaste jag kan föreställa mig är ju om man skapar en crawler som först plockar ut varje rad i kolumn 1 för cover photo exempelvis, och sparar i en textfil bara, och likadant med kolumn 2 och 3 och sen tar man och infogar dem i varsin tabell i en databas sen och lägger ihop. tbl_picture 1 med tbl_desc 1 med tbl_price 1 exempelvis. Känns i min värld som en "enkel" lösning.
Har dock fruktansvärt lite erfarenhet av crawlers så jag kan vara ute och cykla också såklart.

Permalänk
Medlem

Låter som ett jobb för regexps.
Låt oss se några exempelrader på datan så kan säkert någon av oss skapa en regexp som gör om det till SQL.

Permalänk
Medlem

Använd en HTML-parser för att läsa ut innehållet. Det är enklast.

Skickades från m.sweclockers.com

Permalänk
Inaktiv
Skrivet av iXam:

Låter som ett jobb för regexps.
Låt oss se några exempelrader på datan så kan säkert någon av oss skapa en regexp som gör om det till SQL.

Regexps? Ingen aning om vad det är. Men ja sajten är ingen statshemlighet men varning för att den specifika undersidan laddar segt. *Link expired*

Skrivet av Flexbert:

Använd en HTML-parser för att läsa ut innehållet. Det är enklast.

Skickades från m.sweclockers.com

Tack, ingen aning vad en HTML-parser är tbh, men ska genast googla reda på detta.

Permalänk
Medlem

Låter som ett jobb för Python eller liknande skriptspråk. Nu vet jag inte hur mycket trafik han har, men om det inte är extremt mycket borde en sqlite-databas räcka, och det finns det inbyggt stöd för i ex. Python.

Visa signatur

Citera eller nämn gärna mig (@ToJa92) om du svarar på något jag skrivit.
Uppskattar du eller blir hjälpt av ett inlägg jag skrivit är jag tacksam om du gillar det.

Permalänk
Inaktiv

Du ska inte parsa HTML med RegExp. Använd en riktig HTML parser. Vad har du för erfarenheter? Finns tex. XPath i PHP. Du kan säkert skriva ihop ett litet script i jQuery för att göra jobbet med.

Permalänk
Inaktiv

Först och främst vill jag nog omformulera mig lite. Jag kan ha uttalat mig i fel bemärkelser.
Som ni ser på länken så är det en oändligt lång tabell, jag behöver ju inte ha någon html kod från källkoden, det enda som jag vill få ner är ju text,länkar och information som är skriven i kolumnerna.
Vet inte om detta gör någon väsentlig skillnad i tillvägasättet.

Skrivet av ToJa92:

Låter som ett jobb för Python eller liknande skriptspråk. Nu vet jag inte hur mycket trafik han har, men om det inte är extremt mycket borde en sqlite-databas räcka, och det finns det inbyggt stöd för i ex. Python.

Python har jag noll procent erfarenhet utav. Jag trodde att någon skulle vara snabb på att säga att detta enkelt skulle göras i C. Men kan inget C för den delen heller, men är mer sugen på att experimentera med C faktiskt.

Skrivet av havsmonstret:

Du ska inte parsa HTML med RegExp. Använd en riktig HTML parser. Vad har du för erfarenheter? Finns tex. XPath i PHP. Du kan säkert skriva ihop ett litet script i jQuery för att göra jobbet med.

Okej, har ju lite php och mysql erfarenhet. Men är ingen php guru direkt. jQuery har jag pyttelite erfarenhet utav. Men får väl titta på vad XPath är för något. Tack för tipset.

Permalänk
Medlem
Skrivet av anon180898:

Python har jag noll procent erfarenhet utav. Jag trodde att någon skulle vara snabb på att säga att detta enkelt skulle göras i C. Men kan inget C för den delen heller, men är mer sugen på att experimentera med C faktiskt.

Själv skulle jag undvika att använda C till att parsa en hemsida, mest för att jag tycker att stränghanteringen stundtals blir väldigt besvärlig. Python har en inbyggd HTML-parser som inte är särskilt krånglig att förstå sig på: http://docs.python.org/3/library/html.parser.html . Finns mycket om ämnet om du söker också.

EDIT: PHP borde också funka bra att parsa med.

Visa signatur

Citera eller nämn gärna mig (@ToJa92) om du svarar på något jag skrivit.
Uppskattar du eller blir hjälpt av ett inlägg jag skrivit är jag tacksam om du gillar det.

Permalänk
Inaktiv
Skrivet av ToJa92:

Själv skulle jag undvika att använda C till att parsa en hemsida, mest för att jag tycker att stränghanteringen stundtals blir väldigt besvärlig. Python har en inbyggd HTML-parser som inte är särskilt krånglig att förstå sig på: http://docs.python.org/3/library/html.parser.html . Finns mycket om ämnet om du söker också.

EDIT: PHP borde också funka bra att parsa med.

Tack! Jag ska läsa på om Python och dess HTML-parser lite och om jag verkar kunna klura ut det så ger jag det en chans. Tack.

Permalänk
Medlem

Den engelska termen för det du vill göra är "web scraping" - Det kanske underlättar eventuell googling.

Permalänk
Hedersmedlem

Mitt standardtips brukar vara Python och modulen Beautiful Soup. Den gör saker som man tycker borde vara enkla precis så enkla som man skulle hoppas, och jag kan inte se något enklare och/eller kraftfullare sätt att sköta liknande uppgifter. Det passar in perfekt i Pythons allmänna kodflöde. Beautiful Soup och Requests kommer man väldigt långt med, väldigt enkelt (men givetvis kräver det att man är/blir bekant med Python i sig).

Jag hittade först Beautiful Soup efter att det blivit frekvent rekommenderat på Stack Overflow. Efter att ha använt det i iaf tre projekt så kan jag kallas en "anhängare", om man så vill.

Om den data du ska hämta är trivial och välformad så kanske något så enkelt som vanliga textmanipuleringsverktyg som sed/awk kan vara nog, men det beror helt och hållet på hur sidkoden ser ut. Om materialet inte till 100% är konsekvent så kommer sådana lösningar snabbt straffa dessa antaganden.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem
Visa signatur

Kom-pa-TI-bilitet