Kā izsekot saites tīmeklī, izmantojot Python

Satura rādītājs

Šodien es tevi mācīšu cilne caur saitēm lapā ar Python (tīmekļa nokasīšana), tas var būt ļoti noderīgi, lai automātiski izsekotu vietnes saturu un tas nebūtu jādara ar rokām. Manis piedāvātajā programmā katra saite tiek iegūta, lasot html. Jūs varētu modificēt programmu, lai meklētu noteiktu saturu un parādītu tikai tās saites, kuras jūs interesē.

Varat arī nokopēt tīmekli, izmantojot failu robots.txt vai vietņu kartes.

PiezīmeParādītais kods darbojas Python 3.x, ja vēlaties to palaist versijā 2.x, jums būs jāveic nelielas izmaiņas.

Šeit ir kods:

 importēt rindu importēt urllib.request importēt atkārtoti no urllib.parse importēt urljoin def download (lapa): try: request = urllib.request.Request (page) html = urllib.request.urlopen (request) .read () print ("[ *] Lejupielādēt Labi >> ", lapa), izņemot: drukāt ('[!] Kļūda lejupielādējot", lapa) atgriezties Nav atgriešanās html def pārmeklēšanaSaites (lapa): searchLinks = re.compile ('] + href = ["'] ( . *?) ["']', re.IGNORECASE) rinda = rinda. Rinda () rinda.put (lapa) apmeklēta = [lapa] drukāt (" Meklējot saites šeit ", lapa), kamēr (rinda.qsize () > 0): html = lejupielādēt (queue.get ()), ja html == Nav: turpināt saites = searchLinks.findall (str (html)) saitei saitēs: link = urljoin (lapa, str (saite)), ja ( saite nav apmeklētajā): queue.put (link) visit.append (link) if __name__ == "__main__": crawlLinks ("http://www.solvetic.com") 
Pirmā lieta, ko mēs darām, ir iimportēt nepieciešamās bibliotēkas, regulārām izteiksmēm (re), lai izmantotu rindu (rindu), lai pieprasītu un izlasītu lapu (urllib.request), un lai izveidotu absolūtus URL no pamata URL un cita URL (urljoin).

Kods sadalīts 2 funkcijās
lai lejupielādētuTas palīdz mums lejupielādēt lapas html. Tam nav nepieciešams daudz paskaidrojumu, vienīgais, ko tas dara, ir pieprasījums vēlamajai lapai, tas nolasa tā html, ja viss iet labi, tiek parādīts ziņojums Lejupielādēt Labi un ja tas neparāda, ka radās kļūda (šeit mēs varētu parādīt informāciju par kļūdu), beigās atgriež html lasījumu vai Nav.
dziesmu saitesTā ir galvenā funkcija, un tā darbosies caur katru saiti. Paskaidrosim mazliet:

  • Mēs izveidojam mainīgo ar regulāru izteiksmi, kas palīdz mums atrast saites html.
  • Mēs sākam mainīgā tipa asti ar sākotnējo lapu, tas palīdzēs mums saglabāt saites tādā secībā, kādā mēs tās atklājām. Mēs arī sākam saraksta tipa mainīgo, ko sauc par apmeklēto, un kuru mēs izmantosim, lai saglabātu saites, tiklīdz tās tiek apmeklētas; tas tiek darīts, lai izvairītos no bezgalīgas cilpas, iedomājieties, ka x lapa attiecas uz y lapu, un tas savukārt uz x lapu. kamēr mēs bezgalīgi ievietosim šīs saites.
  • Funkcijas kodols ir cikla cikls, kas tiks izpildīts, kamēr rindai ir saites, tāpēc mēs pārbaudām, vai izmērs ir lielāks par 0. Katrā piegājienā mēs noņemam saiti no rindas un nosūta to lejupielādes funkcijai , kas mums atgriezīs html, tad mēs meklēsim saites un pārbaudīsim, vai mēs to jau esam apmeklējuši, ja nē, pievienojam to rindai un sarakstam.

PiezīmeVar šķist, ka saraksts ir lieks, bet mēs noņemsim un izdzēsīsim saites no rindas, tāpēc pārbaude nebūtu pareiza, varbūt saite, kuru apmeklējām pirms kāda laika, un tā vairs nav rindā, bet būs sarakstā.

Pēdējā koda daļa ārpus funkcijām rūpēsies par koda izpildi. Nākamajā attēlā varat redzēt skriešanas koda ekrānuzņēmumu, izsekojot solvetic.

Ja vēlaties, varat palīdzēt sev ar bibliotēku, kas pastāv python ar nosaukumu BeautifulSoup, ar to šķitīs ļoti viegli rīkoties, es to iesaku.

Ja vēlaties kodu, šeit ir pasta indekss:

TraverseLinks.zip 646 baiti 493 lejupielādes

Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave