Kaip sekti nuorodas žiniatinklyje naudojant „Python“

Turinys

Šiandien aš jus mokysiu peržiūrėkite nuorodas puslapyje su „Python“ (interneto grandymas), tai gali būti labai naudinga automatiškai sekti svetainės turinį ir nereikia to daryti rankiniu būdu. Mano pateiktoje programoje kiekviena nuoroda gaunama skaitant html, galite modifikuoti programą, kad ieškotumėte tam tikro turinio ir rodytumėte tik tas nuorodas, kurios jus domina.

Taip pat galite nuskaityti žiniatinklį naudodami failą robots.txt arba svetainių schemas, kurias turi svetainės.

PastabaRodomas kodas veikia „Python 3.x“, jei norite paleisti jį 2.x versijoje, turėsite atlikti nedidelius pakeitimus.

Čia yra kodas:

 importo eilė importuoti urllib.request importuoti re iš urllib.parse import urljoin def download (page): try: request = urllib.request.Request (page) html = urllib.request.urlopen (request) .read () print ("[ *] Atsisiųsti gerai >> ", puslapis), išskyrus: print ('[!] Klaida atsisiunčiant", puslapis) return Nieko negrąžinti html def crawlLinks (puslapis): searchLinks = re.compile ('] + href = ["'] ( .? > 0): html = atsisiųsti (eilė.get ()), jei html == Nėra: tęsti nuorodas = ieškoti nuoroda nėra aplankytame): queue.put (nuoroda) visit.append (nuoroda), jei __name__ == "__main__": crawlLinks ("http://www.solvetic.com") 
Pirmas dalykas, kurį darome, yra I.importuoti reikiamas bibliotekas, norint naudoti įprastas išraiškas (re), naudoti eilę (eilę), teikti užklausas ir perskaityti puslapį (urllib.request), taip pat sukurti absoliučius URL iš pagrindinio URL ir kito URL (urljoin).

Kodas suskirstytas į 2 funkcijas
AtsisiųstiTai padeda mums atsisiųsti puslapio html. Tam nereikia daug paaiškinimų, vienintelis dalykas, kurį jis daro, yra prašymas į norimą puslapį, jis skaito jo html, jei viskas gerai, rodomas pranešimas Atsisiųsti gerai, o jei nerodo, kad įvyko klaida (čia mes gali rodyti informaciją apie klaidą), pabaigoje pateikia html read arba None.
sekti nuorodasTai yra pagrindinė funkcija ir bus vykdoma per kiekvieną nuorodą. Truputį paaiškinkime:

  • Mes sukuriame kintamąjį su įprasta išraiška, kuri padeda rasti nuorodas html.
  • Pradedame uodegos tipo kintamąjį nuo pradinio puslapio, tai padės mums išsaugoti nuorodas tokia tvarka, kokia mes jas atradome. Mes taip pat pradedame sąrašo tipo kintamąjį, vadinamą aplankytas, kurį naudosime išsaugodami nuorodas, kai jos lankomos, tai daroma siekiant išvengti begalinės kilpos, įsivaizduokite, kad puslapis x nurodo puslapį y, o tai savo ruožtu - puslapį x kol šias nuorodas įterpsime be galo.
  • Funkcijos esmė yra ciklas while, kuris bus vykdomas tol, kol eilėje yra nuorodų, todėl tikriname, ar dydis yra didesnis nei 0. Kiekviename leidime pašaliname nuorodą iš eilės ir siunčiame ją į atsisiuntimo funkciją , kad mums bus grąžintas html, tada ieškome nuorodų ir patikriname, ar jau aplankėme, jei ne, įtraukiame į eilę ir sąrašą.

PastabaGali atrodyti, kad sąrašas yra nereikalingas, bet mes pašalinsime ir ištrinsime nuorodas iš eilės, todėl patikrinimas nebūtų teisingas, galbūt nuoroda, kurią aplankėme prieš kurį laiką ir jos jau nėra eilėje, bet bus sąraše.

Paskutinė kodo dalis, nepriklausanti funkcijoms, pasirūpins kodo vykdymu. Kitame paveikslėlyje galite pamatyti veikiančio kodo ekrano kopiją, atsekančią solvetic.

Jei norite, galite padėti sau su biblioteka, egzistuojančia „python“, pavadinimu „BeautifulSoup“, atrodys, kad ją labai lengva tvarkyti, rekomenduoju.

Jei norite kodo, čia yra pašto kodas:

TraverseLinks.zip 646 baitai 493 atsisiuntimai

Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave