FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Medlem
|
Jag behöver en sorts spindel till min hemsida (www.svenskabatmarknaden.se) för att kunna lista ut annonser från andra annonssidor, likt allaannonser.se.
Jag har tänkt underlätta lite genom att be de anslutna handlarna att göra index-sidor som ser ut såhär: Datum|Bild(Ja/Nej)|Rubrik|Beskrivning|Kategori|Län|Typ|Pris|Länk Datum|Bild(Ja/Nej)|Rubrik|Beskrivning|Kategori|Län|Typ|Pris|Länk Datum|Bild(Ja/Nej)|Rubrik|Beskrivning|Kategori|Län|Typ|Pris|Länk Datum|Bild(Ja/Nej)|Rubrik|Beskrivning|Kategori|Län|Typ|Pris|Länk osv.. Med andra ord, en annons per rad. Frågan är nu hur man gör självaste funktionen/spindeln som ska lista ut alla annonser/rader från de olika sidorna och dessutom sortera dem i t ex. datumordning. Någon som vet hur Allaannonser.se har gjort om dom sparar i databasen och sedan listar ut eller om dom kör direkt från index-sidorna? Det blir ju genast svårare om man ska spara i databasen, då man måste göra regelbundna granskningar och resultaten blir inte lika färska. Obs: Jag kan inte XML och RSS, ja kör helst PHP. Vore SUPERGLAD för hjälp!! |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Har WN som tidsfördriv
|
Har sidorna du ska ta annonserna ifrån RSS så har du det lätt tillgängligt redan. Om inte får du skapa en crawler, t.ex. i Web Scraper+ (finn säkert billigare och gratis men det är den jag använder).
Det brukar inte ta lång tid att sätta sig in i hur det fungerar. Den här crawlern låter du t.ex. sen rulla på servern och infoga det direkt i en uppsatt MySQL databas. Edit: Missförstod lite, tänkte att du skulle ta informationen från redan tillgängliga sidor. Men om du har anslutna handlare kan de väl skapa ett RSS-flöde eller infoga det direkt genom att fylla i formlär? Du får dock problem med att ha det helt uppdaterat om du ska läsa det från en sida eller RSS, då det inte läses i realtid. |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Medlem
|
Jo som sagt jag kan inte själv RSS så det är redan uteslutat. Och då vet jag som sagt att jag måste skapa en crawler. Kan man inte göra en själv då? Det borde väl inte vara allt för svårt eftersom alla index-filerna som den ska söka igenom ser likadana ut, en annons per rad i filen. Sedan är jag som sagt skeptisk till databas-användning eftersom det blir svårt att hantera t ex. när en annons tas bort från den ursprungliga sidan och när det kommer till annonser, eller när någon ändrar i sin annons. Det vore bättre att bara lista ut direkt från ursprungssidan.
Pengar har jag inga, men hoppas att få med min spindel/crawler ![]() EDIT: Med ansluten handlare menar jag att jag har avtalat med handlaren t ex. Börjessons Båt att jag får ta information från deras hemsida. Och då ber jag dom fixa en såndär index-sida där annonserna radas ut en per rad. Än en gång, varken jag eller min målgrupp kan RSS så det är ingen idé att föreslå det ![]() |
||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Mycket flitig postare
|
Du kanske kan få tillgång till dem i ett enkelt txt eller csv filformat så borde det vara relativt enkelt att plocka ut infon. Fast xml, rss eller webservices är ju annars helt oslagbart för detta, du har ju en bra anledning att börja lära dig detta nu annars
![]() Jag skulle nog rekommendera dig att besöka alla sidor en eller ett par gång per dygn eller liknande och spara ner infon i en db istället för att hämta infon för varje besökare, det kommer att bli väldigt många frågor annars och riskerar att skapa en ganska långsam sida. I de fall en annons plockas bort har säkert Börjessons Båt en vanlig felsida eller liknande som visar att annonsen plockats bort. |
|||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Medlem
|
Som programerare med kärlek för automatik tänker jag VERKLIGEN INTE gå in på sidorna flera gånger per dag och hålla på och kolla alla uppdateringar, det är HELT UTSELUTET.
Jag förstår inte att det ska vara så svårt att plocka ut all information och lista dem i datumordning, speciellt när sidorna som jag tar informationen ifrån ser likadana ut: Datum|Bild(Ja/Nej)|Rubrik|Beskrivning|Kategori|Län|Typ|Pris|Länk Datum|Bild(Ja/Nej)|Rubrik|Beskrivning|Kategori|Län|Typ|Pris|Länk Datum|Bild(Ja/Nej)|Rubrik|Beskrivning|Kategori|Län|Typ|Pris|Länk Datum|Bild(Ja/Nej)|Rubrik|Beskrivning|Kategori|Län|Typ|Pris|Länk Det MÅSTE ju gå att göra på nått inte så krångligt sätt. Om RSS inte visar realtid så är ju inte det heller bra, men eftersom alla pratar så gott om RSS i detta sammanhang så kan jag tänka mig att läsa t ex. om det finns någon artikel om hur man gör det jag ska göra. Ge mig länk bara så. |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Klarade millennium-buggen
|
Om du får företagen i fråga att skapa sådan sidor är det en kakbit att promenera omkring och hämta värdena.
Själv plockar jag in några hundra värden från några hundra webbsidor dagligen och de är INTE strukturerade på det sätt som beskrivs här. Men allt går om man ger sig f_n på det. Vad du behöver är: En tabell på adresserna till sidorna ifråga. En tabell med strukturerade data om vilka värden som är vilka och var dom finns att hämta på sidan. en tabell där du lägger in värdena när du hämtat dom på ett automatiserat sätt. där bör också finnas info om senast hämtat, eventuella fel (ej laddad sida, tolkningsfel eller dylikt. ) När du kör uppdateringen får du ut vilka fel som blivit och sen får du manuellt scanna av vad det handlar om. Om du får data från butikerna ifråga så fins det en risk att de inte uppdaterar lika ofta som de uppdaterar andra sidor. Sen måste det finnas ett mervärde för handlaren att infon verkligen når ut, annars kommer han att skita i det så fort det innebär krångel av nåt slag. Lita inte på att alla handlare kommer att leverera punktligt bara för att du sagt att du vill ha data. Därför finns det en fördel i att hämta råvärden direkt från sidorna. lämpliga kommandon i PHP: curl för att hämta sidor tidy för att analysera dem. regexp för att hitta rätt i materialet. |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Medlem
|
Kan man inte på nått sätt skapa en temporär tabell i databasen där man kör in all data på nytt och skriver ut varje gång sidan uppdateras? Typ såhär:
Kod:
<? $filepath = "http://www.beg.se/allaannonser.asp"; $contents = file($filepath); mysql_query("CREATE TEMPORARY TABLE spider"); foreach ($contents as $row) { * *list($datum, $bild, $rubrik, $beskrivning, $kategori, $lan, $typ, $pris, $lank) = explode("|", $row); mysql_query("INSERT INTO spider ( `annonstyp` , `annons_kategori` , `annons_rubrik` , `annons_text` , `annons_lank` , `annons_pris` , `kontakt_lan` , `datetime` ) VALUES ('".$typ."','".$kategori."','".$rubrik."','".$beskrivning."','".$lank."','".$pris."','".$lan."','".$datum."')"); } ?> |
||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Medlem
|
Nej detdär var visst ingen bra idé då det tog sjukt lång tid för sidan att laddas.
|
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Medlem
|
Snälla hjälp mig. Jag kan tyvärr inte betala er men jag kan erbjuda bannerplats på hemsidan om ni hjälper mig. Snälla! <3
|
||
![]() |
![]() |
![]() |
#10 | ||
|
|||
Flitig postare
|
Vad som är uteslutet är att du plockar denna infon varje gång en användare kommer in på sidan. Det kommer att göra användarupplevelsen väldigt dålig.
Vad du vill göra är att föra informationen närmare dig. Sedan beror det klart på hur du vill lagra den. Ser två alternativ här: Om du är rädd för databaser så kan du lagra det du läser från annonssajterna som rådata (som du får det från siten) i filer. Du kan uppdatera dina filer ett par gånger om dagen. För att parsa upp datan använder du explode. Detta är en relativt okomplicerad metod men inte alls effektiv eftersom du måste analysera datan varje gång du ska presentera den. Det andra alternativet, som jag själv använder, och rekommenderar är att du laddar ned rådatan och analyserar. Efter analys är klar så sätter du in det i några databastabeller (ingen temporary). Detta är den helt klart snabbare metoden och underlättar saker som sökning. Ett litet problem jag ser här är att du måste hitta dubletter av annonser efter varje nedladdning. Kanske kan du göra en enkel crc32 hash över datum, titel och beskrivning för att avgöra om annonsen är unik eller inte. Om den inte är unik så sätter du helt enkelt inte in den i databasen. Sedan rekommenderar jag också att du cachar undan det du läser från databasen, tex cachar det i en halvtimme. Lagra cachen i RAM med eAccelerator eller APC. |
||
![]() |
![]() |
Svara |
|
|