ugrás a tartalomhoz

Honlapon keresés

Castor87 · 2008. Jan. 22. (K), 18.03
Üdv!

Egy olyan PHP-ben írt lapot szeretnék készíteni, ahol megadok egy internet címet pl. http://weblabor.hu és ezen az oldalon egy reguláris kifejezés alapján keres. Az lenne a kérdésem, hogy lehetne az adott oldal forráskódját kinyerni akár egy változóba? Vagy milyen egyéb módon lehet keresni egy másik honlapon?
 
1

lapét

winston · 2008. Jan. 22. (K), 19.38
ki lehet, csak nem illik. egyébként megoldható: be tudod olvasni az adott lapot (nem az egész siteot, hanem a konkrét lapot), egy változóba (ezt többféleképp is megteheted, próbálkoztam vele, rss olvasó írásánál, akár a sima fopen-fread is beolvassa, bár vannak szerencsésebb módok rá), és utána tudod szövegként kezelni. (a html forráskódot, értelemszerűen) ha az egész siteot akarod, minden lapját (sic!), akkor megintcsak regexphez kell folyamodj: leszeded a főoldalt, és kiregexpeled belőle a linkeket, amikez megintcsak letöltesz, és így tovább.

megjegyzés: lehet, hogy az oldal tulajdonosának nem fog tetszeni, megeshet, hogy bannol (főleg, ha nagyon gyorsan kéregeted az oldalakat, és sok oldal van, és ezzel leterheled), szóval nem feltétlenül szerencsés a dolog

ha csak egy lapot töltesz be, akkor értelemszerűen csak azon belül keres a regexped, ha fa-bejárás szerűen az összeset, akkor az összessen. érdemes lehet cachelni az adott oldal tartalmát. gyakorlatban elég kemény dolog lesz, mert minden lekérésnél sok beolvasás és esetleg feldolgozás (értsd: lassú)
2

Spider

vbence · 2008. Jan. 22. (K), 19.45
Az igazi keresőkben lézetik egy a kereséstől független modul, a spider, crawler vagy akármi, ami egész nap oldalak forrását menti le és egy adatbázisba teszi. (ez az indexelés).

Az ilyen robotokra vonatkoznak bizonyos illemszabályok, például két kérés között legalább 30 másodpercnek el kell telnie, nem lenne fair, ha leterhelnéd a szervert annyi kéréssel, amennyi a csövön kifér.

A tényleges keresés már a kész adatbázisban történik, ahol már a kulcsszavakhoz vannak hozzárendelve az oldalak, soksok egyéb statisztikával körítve. Így ha például google-ben keresel nem a pármilliárd oldal szövegében indít el egy plaintext keresést, csak a kulcsszó-adatbázisból bányássza ki a szóba jövő oldalakat.

Egy regex kereséshez az eredeti forrásban kéne keresned. Pár dolgot persze lehetne gyorsítani rajta (például lehetne cache-elni, milyen betűk, betűkombinációk találhatók az oldalon), ha a regex tartalmaz mondjuk A betüt, de az adott fájl nem, akkor megspóroltál egy keresést abban a fájlban. - De mindet egybevéve rengeteg erőforrást igényelne a keresés maga is. Arrólnem is beszélve, hogy a spidernek rengeteg oldalt kéne beindexelnie.

Olyan formában tudnám elképzelni, hogy beírod a regex-edet és a "weblabor.hu" -t. Először keres a már beindexelt lapok között. Ha nincs beindelve semmi a weblabor.hu-ról megkapja a sider az url-t és beilleszti az ütembtervébe. Aztán mondjuk 10-20 óra múlva, amikor van már pár találat kap egy mail értesítőt a felhasználó, hogy rendelkezésre áll X darab találata. A következő kereséskor már rendelkezésre áll az indexben egy csomó weblaboros lap tartalma, tehát ott lehet, hogy azonnal lesz találat.
3

thx

Castor87 · 2008. Jan. 23. (Sze), 08.13
Köszönöm mindkét választ! Természetesen nem a google-t akarom lekörözni, így csak 1-1 lapon és nem egész honlapon/honlapokon akarok keresni. :)
4

Kooperáció

janoszen · 2008. Jan. 23. (Sze), 08.29
Üdv,

lehet, hogy érdemes lenne akkor leülni beszélgetni az oldal tulajdonosaival, hátha valamilyen módon hozzáférsz a háttéradatbázishoz, amiben jóval hatékonyabban tudsz keresni.

J
5

talán

Castor87 · 2008. Jan. 23. (Sze), 09.40
Igen, ez lenne a legegyszerűbb, de szvsz nagyon kevesen vannak, vagy nincs is olyan, aki odaadná saját adatbázisát, még ha annak tartalma kint is van a weben.
6

API

Max Logan · 2008. Jan. 23. (Sze), 09.45
Ha életképes elgondolás miatt szeretnél keresést végezni és szorosabb együttműködés lenne a két oldal között, akkor célszerű lenne egy egyszerű API-t csinálni, amin keresztül lehet keresni. Így nem férsz hozzá közvetlenül az adatbázishoz, ergó nagyobb a békesség.
7

jogosultság

winston · 2008. Jan. 23. (Sze), 09.45
hát, hogy ha van jó hosztja, saját szervere van, akkor tud neked olyan db user-t kreálni, amivel csak az általa megadott táblákat (tartalomtáblák), és csak olvasni tudod. szóval ha vevők rá, akkor megoldható. (más kérdés, hogy akkor ha eddig nem engedték, akkor most ki kell engedniük a db-t a netre