Tīmekļa skrāpēšana, kas pazīstama arī kā tīmekļa datu ieguve, ir automatizēta metode datu vai satura iegūšanai no tīmekļa lapām.

Tīmekļa skrāpji automatizē datu ieguvi bez cilvēka iejaukšanās. Skrāpis piekļūst tīmekļa lapai, nosūtot HTTP pieprasījumus, līdzīgi kā to dara tīmekļa pārlūkprogramma. Tomēr tā vietā, lai parādītu ienesto HTML, tas apstrādā to saskaņā ar jūsu norādījumiem un saglabā rezultātu.

Tīmekļa skrāpji ir noderīgi, lai ielādētu datus no vietnēm, kas nenodrošina API. Tie ir populāri tādās jomās kā datu zinātne, kiberdrošība, frontend un backend izstrāde.

Tīmekļa skrāpēšana Go

Pakalpojumā Go ir dažādas tīmekļa nokasīšanas pakotnes. Populārākie ir goquery, Colly un ChromeDP.

ChromeDP ir selēnam līdzīga tīmekļa draiveru pakotne. Tas atbalsta Chrome izstrādātāju rīku protokolu pakalpojumā Go bez atkarībām.

Colly ir tīmekļa bibliotēka, kas izveidota, izmantojot goquery. Taču goquery ir ātrāka vietņu nokopšanas iespēja pakalpojumā Go.

Kas ir goquery?

CSS bibliotēka jQuery palīdzēja iedvesmot

instagram viewer
goquery. Tā ir Go bibliotēka, kuras pamatā ir net/html pakotne, kas ievieš ar HTML5 saderīgu marķieri un parsētāju. Tas izmanto arī Cascadia pakotni, kas ievieš CSS atlasītājus lietošanai ar parsētāju, ko nodrošina net/html.

Goquery instalēšana

Palaidiet tālāk norādīto komandu savā terminālī, lai instalētu goquery. Ja rodas kļūdas, mēģiniet atjaunināt savu Go versiju.

aiziet iegūstiet vietni github.com/PuerkitoBio/goquery

Tīmekļa nokasīšanas process

Jūs varat sadalīt kopējo nokasīšanas procesu trīs mazākos uzdevumos:

  1. HTTP pieprasījumu veikšana.
  2. Izmantojot selektorus un lokatorus lai iegūtu nepieciešamos datus.
  3. Datu saglabāšana datu bāzē vai datu struktūrās tālākai apstrādei.

HTTP pieprasījumu veikšana pakalpojumā Go

Varat nosūtīt HTTP pieprasījumus, izmantojot net/http pakotne, kas iekļauta Go standarta bibliotēkā.

iepakojums galvenais

imports "net/http"
imports "baļķis"
imports "fmt"

funcgalvenais() {
webUrl := "https://news.ycombinator.com/"
atbilde, kļūda:= http. Iegūt (webUrl)

ja kļūda! = nulle {
žurnāls. Fatalln (kļūda)
} citsja atbildi. Statusa kods == 200 {
fmt. Println ("Mēs varam nokasīt šo")
} cits {
žurnāls. Fatalln ("Nekasiet šo")
}
}

http. gūt atgriež atbildes pamattekstu un kļūdu. atbildi. Statusa kods ir pieprasījuma-atbildes statusa kods.

Veicot HTTP pieprasījumus, ja atbildes statusa kods ir 200 varat turpināt vietnes nokasīšanu.

Nepieciešamo datu iegūšana, izmantojot goquery

Vietnes HTML iegūšana

Pirmkārt, jums ir jāparsē vienkāršs HTML no atbildes (atbilde.ķermenis), lai iegūtu pilnu dokumenta objektu, kas pārstāv tīmekļa lapu:

dokuments, err := goquery. NewDocumentFromReader (atbilde. korpuss)

ja kļūda! = nulle {
žurnāls. Fatalln (kļūda)
}

Tagad varat izmantot dokumenta objektu, lai piekļūtu tīmekļa lapas struktūrai un saturam.

Nepieciešamo elementu atlase no HTML

Jums būs jāpārbauda tīmekļa lapa, lai pārbaudītu izņemamo datu struktūru. Tas palīdzēs jums izveidot selektoru, lai tam piekļūtu.

Izmantojot atlasītājus un lokatorus, varat iegūt nepieciešamo HTML, izmantojot Atrast dokumenta objekta metode.

The Atrast metode izmanto CSS atlasītāju, lai atrastu elementu, kurā ir nepieciešamie dati:

dokumentu. Atrast("tr.athing")

Iepriekš minētais kods atgriež tikai pirmo HTML elementu, kas atbilst atlasītājam, vai tukšu sarakstu, ja atbilstības nebija vispār.

Vairāku elementu atlase no HTML

Lielāko daļu laika jūs vēlaties iegūt visus HTML elementus, kas atbilst jūsu atlasītājam.

Varat atlasīt visus atbilstošos elementus HTML, izmantojot Katrs vērtības metode, kas Atrast () atgriežas. The Katrs metode izmanto funkciju ar diviem parametriem: indeksu un tipa atlasītāju *goquery. Izlase.

dokumentu. Find("tr.athing").Katrs(func(rādītājs starpt, atlasītājs *goquery. atlase) {
/* Procesu atlasītājs šeit */
})

Funkcijas pamattekstā varat atlasīt konkrētus vajadzīgos datus no HTML. Šajā gadījumā jums ir nepieciešamas katras lapas saraksta ziņas saites un virsraksti. Izmantojiet Atrast atlasītāja parametra metode, lai sašaurinātu elementu kopu un izvilktu teksta vai atribūtu vērtības.

dokumentu. Find("tr.athing").Katrs(func(rādītājs starpt, atlasītājs *goquery. atlase) {
virsraksts := atlasītājs. Find("td.title").Teksts()
saite, atrasts := selektors. Find("a.titlelink").Attr("href")
})

Iepriekš minētais kods izsauc Teksts rezultāta metode no atlasītājs. Atrast lai izvilktu tabulas šūnas saturu. Lai atlasītu atribūtus, piemēram, saišu un attēlu vietrāžus URL, ir jāizmanto Attr metodi. Šī metode arī atgriež vērtību, kas norāda, vai atribūts vispār pastāv.

Process ir vienāds, izvēloties jebkurus elementus un atribūtus no tīmekļa lapas.

The Atrast metode ir ļoti spēcīga, ļaujot veikt plašu darbību klāstu, lai atlasītu un atrastu HTML elementus. Tos varat izpētīt goquery dokumentācijā.

Izkopto datu saglabāšana

Saites atribūts un virsraksts ir virknes, kuras varat piešķirt mainīgajiem. Reālos scenārijos jūs saglabāsit datu bāzē vai datu struktūrā manipulācijām. Bieži vien pietiks ar vienkāršu pielāgotu struktūru.

Izveidojiet struktūru ar laukiem virsraksts un saite un konstrukciju daļa, lai saglabātu struktūras veidu.

veids Informācija struktūra {
saite virkne
virsraksts virkne
}
info := veidot([]Informācija, 0)

Kad esat izveidojis struktūru un šķēli, dokumenta metodes funkcijas pamattekstā aizpildiet sadaļas funkciju, kuru nododat metodei Atrast. Izmantojiet struktūras veidu, lai izveidotu jaunas datu struktūras, no kurām katra satur vienu rezultātu.

info = pievienot(informācija, informācija{
nosaukums: tituls,
saite: saite,
})

Tam ir pievienoti veidi Informācija(struktūra) uz info(skalums), no kura varat manipulēt ar datiem, kā vēlaties.

Drukājot daļu, tiek parādīts, ka esat veiksmīgi nokopējis vietni un aizpildījis daļu.

fmt. Println (informācija)

Iegūtos datus ir saprātīgi saglabāt lokālajā kešatmiņā, lai tīmekļa lapas serveris nenonāktu vairāk, nekā nepieciešams. Tas ne tikai samazinās trafiku, bet arī paātrinās jūsu lietotnes darbību, jo vietējo datu izgūšana ir ātrāka nekā pieprasījumu veikšana un vietņu nokasīšana.

Programmā Go ir daudzas datu bāzes pakotnes, kuras varat izmantot datu saglabāšanai. The datu bāze/sql pakotne atbalsta SQL datu bāzes. Ir arī tādi NoSQL datu bāzes klienti kā MongoDB Go draiveris, un bezserveru datubāzēm, piemēram, FaunaDB, izmantojot FaunaDB draiveris.

Tīmekļa skrāpēšanas būtība pakalpojumā Go

Ja mēģināt iegūt datus no vietnes, goquery ir lieliska vieta, kur sākt. Taču tā ir jaudīga pakotne, kas var paveikt vairāk nekā tikai tīmekļa nokasīšanu. Plašāku informāciju par tā funkcionalitāti varat uzzināt oficiālajā projekta dokumentācijā.

Tīmekļa skrāpēšana ir svarīga prasme dažādās tehnoloģiju jomās, un tā noderēs daudzos jūsu projektos.

Kā ieviest objektorientētas programmēšanas koncepcijas programmā Go

Lasiet Tālāk

DalītiesČivinātDalītiesE-pasts

Saistītās tēmas

  • Programmēšana
  • Web izstrāde
  • Programmēšana

Par autoru

Ukeje Chukwuemeriwo labestība (Publicēti 3 raksti)

Goodness ir tehnisks rakstnieks, aizmugursistēmas izstrādātājs un datu analītiķis, kurš, pētot šo aizraujošo jomu, vienkāršo dažādas tehnoloģiju tēmas.

Vairāk no Ukeje Chukwuemeriwo Goodness

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam, lai saņemtu tehniskos padomus, pārskatus, bezmaksas e-grāmatas un ekskluzīvus piedāvājumus!

Noklikšķiniet šeit, lai abonētu