A webes adatmentés, más néven webes adatkinyerés, egy automatizált módszer az adatok vagy tartalom weboldalakról való kinyerésére.
A webkaparók emberi beavatkozás nélkül automatizálják az adatkinyerést. A lehúzó HTTP-kérések küldésével éri el a weboldalt, hasonlóan egy webböngészőhöz. A beolvasott HTML megjelenítése helyett azonban az Ön utasításai szerint feldolgozza azt, és eltárolja az eredményt.
A webkaparók jól jöhetnek adatok lekéréséhez olyan webhelyekről, amelyek nem biztosítanak API-t. Olyan területeken népszerűek, mint az adattudomány, a kiberbiztonság, a frontend és a háttérfejlesztés.
Webkaparás a Go-ban
A Go-ban különféle webkaparási csomagok találhatók. A népszerűek közé tartozik a goquery, a Colly és a ChromeDP.
A ChromeDP egy szelénszerű webes illesztőprogram-csomag. Támogatja a Chrome fejlesztői eszközök protokollját a Go-ban függőségek nélkül.
A Colly egy webkaparás-specifikus könyvtár, amely goquery segítségével készült. De a goquery a gyorsabb lehetőség a webhelyek lekaparására a Go alkalmazásban.
Mi az a goquery?
A CSS-könyvtár, a jQuery segített az inspirációban goquery. Ez egy Go könyvtár, amely a net/html csomag, amely egy HTML5-kompatibilis tokenizálót és elemzőt valósít meg. Használja a Cascadia csomagot is, amely CSS-szelektorokat valósít meg a net/html által biztosított értelmezővel való használatra.
Goquery telepítése
Futtassa az alábbi parancsot a terminálon a goquery telepítéséhez. Ha bármilyen hibát észlel, próbálja meg frissíteni a Go verzióját.
megy töltse le a github.com/PuerkitoBio/goquery webhelyet
A webkaparási folyamat
A teljes kaparási folyamatot három kisebb feladatra oszthatja:
- HTTP kérések készítése.
- Kiválasztók és lokátorok használata hogy megkapja a szükséges adatokat.
- Adatok mentése adatbázisba vagy adatstruktúrákba további feldolgozás céljából.
HTTP-kérések készítése a Go-ban
HTTP kéréseket küldhet a net/http csomagot, amelyet a Go standard könyvtár tartalmaz.
csomag fő-
import "net/http"
import "napló"
import "fmt"funcfő-() {
webUrl := "https://news.ycombinator.com/"
válasz, err:= http. Get (webUrl)
ha hiba! = nulla {
log. Fatalln (hiba)
} másha válasz. Állapotkód == 200 {
fmt. Println ("Ezt le tudjuk kaparni")
} más {
log. Fatalln ("Ne kapard ezt")
}
}
http. Kap választörzset és hibát ad vissza. válasz. ÁllapotKód a kérés-válasz állapotkód.
A HTTP-kéréseknél, ha a válasz állapotkód van 200 folytathatja a webhely kaparását.
A szükséges adatok lekérése a goquery segítségével
A Webhely HTML beszerzése
Először is elemeznie kell az egyszerű HTML-t a válaszból (válasz.test), hogy megkapja a weboldalt reprezentáló teljes dokumentumobjektumot:
dokumentum, err := goquery. NewDocumentFromReader (válasz. Test)
ha hiba! = nulla {
log. Fatalln (hiba)
}
Mostantól a dokumentum objektum segítségével hozzáférhet a weboldal szerkezetéhez és tartalmához.
A szükséges elemek kiválasztása a HTML-ből
Meg kell vizsgálnia a weboldalt, hogy ellenőrizze a kinyerni kívánt adatok szerkezetét. Ez segít létrehozni egy választót a hozzáféréshez.
A szelektorok és lokátorok segítségével kibonthatja a szükséges HTML-t a megtalálja a dokumentum objektum metódusa.
A megtalálja A metódus egy CSS-választó segítségével keresi meg a szükséges adatokat tartalmazó elemet:
dokumentum. Find("tr.athing")
A fenti kód csak a választónak megfelelő első HTML-elemet adja vissza, vagy egy üres listát, ha egyáltalán nem volt egyezés.
Több elem kiválasztása HTML-ből
Legtöbbször az összes HTML-elemet le kell kérnie, amely megfelel a választónak.
A HTML-ben az összes egyező elemet kiválaszthatja a Minden egyes módszere az érték, hogy Megtalálja() visszatér. A Minden egyes A metódus két paraméterrel rendelkező függvényt vesz fel: egy indexet és egy * típusú szelektortgoquery. Kiválasztás.
dokumentum. Find("tr.athing").Each(func(index int, választó *goquery. Kiválasztás) {
/* Folyamatválasztó itt */
})
A függvénytörzsben kiválaszthatja a kívánt konkrét adatokat a HTML-ből. Ebben az esetben szüksége van az oldallistán szereplő összes bejegyzés hivatkozására és címére. Használja a megtalálja a választóparaméter módszere az elemek halmazának szűkítésére és a szöveg vagy attribútumértékek kinyerésére.
dokumentum. Find("tr.athing").Each(func(index int, választó *goquery. Kiválasztás) {
cím := választó. Find("td.title").Szöveg()
link, talált := választó. Find("a.titlelink").Attr("href")
})
A fenti kód a Szöveg származó eredmény módszere választó. megtalálja táblázatcella tartalmának kinyerésére. Az attribútumok – például link- és kép-URL-ek – kiválasztásához a Attr módszer. Ez a metódus egy értéket is ad vissza, jelezve, hogy az attribútum létezik-e egyáltalán.
A folyamat ugyanaz a weboldalon lévő elemek és attribútumok kiválasztásánál.
A megtalálja A módszer nagyon hatékony, lehetővé téve a műveletek széles skáláját a HTML-elemek kiválasztására és megkeresésére. Ezeket a goquery dokumentációjában fedezheti fel.
A lekapart adatok mentése
A link attribútum és a cím olyan karakterláncok, amelyeket változókhoz rendelhet. Valós forgatókönyvekben egy adatbázisba vagy adatstruktúrába kell mentenie manipuláció céljából. Gyakran egy egyszerű egyéni struktúra is elegendő.
Hozzon létre egy struktúrát mezőkkel cím és hivatkozás, valamint egy szelet struktúrák a struct típus tárolására.
típus Információ struct {
link húr
cím húr
}
info := készítsenek([]Információ, 0)
Miután létrehozta a struktúrát és a szeletet, a dokumentummódszer függvény törzsében töltse fel a szeletet a Keresés metódusnak átadott függvényben. Használja a struct típust új adatszerkezetek példányosításához, amelyek mindegyike egy eredményt tartalmaz.
info = mellékel(információ, információ{
cím: cím,
link: link,
})
Ez hozzáfűzi a típusokat Információ(a struktúra) a info(a szelet), amelyből tetszés szerint módosíthatja az adatokat.
A szelet kinyomtatása azt mutatja, hogy sikeresen lekaparta a webhelyet, és feltöltötte a szeletet.
fmt. Println (információ)
A kikapart adatokat célszerű helyi gyorsítótárba menteni, hogy ne érje el a szükségesnél többet a weboldal szerverét. Ez nemcsak a forgalmat csökkenti, hanem felgyorsítja az alkalmazást, mivel gyorsabban lehet lekérni a helyi adatokat, mint kéréseket intézni és webhelyeket lekaparni.
A Go-ban számos adatbáziscsomag található, amelyek segítségével mentheti az adatokat. A adatbázis/sql csomag támogatja az SQL adatbázisokat. Vannak olyan NoSQL adatbázis-kliensek is, mint a MongoDB Go illesztőprogram, és a kiszolgáló nélküli adatbázisok, mint például a FaunaDB a FaunaDB illesztőprogram.
A webkaparás lényege a Go-ban
Ha egy webhelyről próbál adatokat kaparni, a goquery kiváló kiindulópont. De ez egy hatékony csomag, amely többre képes, mint a webkaparás. Funkcióiról bővebben a hivatalos projektdokumentációban tájékozódhat.
A webkaparás fontos készség különféle technológiai területeken, és sok projektje során hasznos lesz.
Objektumorientált programozási koncepciók megvalósítása a Go-ban
Olvassa el a következőt
Kapcsolódó témák
- Programozás
- Webfejlesztés
- Programozás
A szerzőről

Goodness műszaki író, háttérfejlesztő és adatelemző, aki leegyszerűsíti a különféle technológiai témákat, miközben felfedezi ezt a lenyűgöző területet.
Iratkozzon fel hírlevelünkre
Csatlakozzon hírlevelünkhöz műszaki tippekért, ismertetőkért, ingyenes e-könyvekért és exkluzív ajánlatokért!
Kattintson ide az előfizetéshez