Cum să urmăriți linkurile pe un web folosind Python

Cuprins

Astăzi am să te învăț parcurgeți link-uri pe o pagină cu Python (răzuire web), acest lucru poate fi foarte util pentru a urmări automat conținutul de pe un site web și nu trebuie să îl faceți manual. În programul pe care îl aduc, fiecare link este obținut citind html, puteți modifica programul pentru a căuta un anumit conținut și a afișa doar linkurile care vă interesează.

De asemenea, puteți face web scraping folosind fișierul robots.txt sau sitemap-urile pe care le au site-urile web.

NotăCodul afișat funcționează în Python 3.x, dacă doriți să îl rulați în versiunea 2.x va trebui să faceți mici modificări.

Iată codul:

 coada de import import urllib.request import re de la urllib.parse import urljoin def download (pagina): try: request = urllib.request.Request (page) html = urllib.request.urlopen (request) .read () print ("[ *] Descarcă OK >> ", pagină) cu excepția: print ('[!] Eroare la descărcare', pagină) return Niciun returnează html def crawlLinks (pagina): searchLinks = re.compile ('] + href = ["'] ( * > 0): html = download (queue.get ()) if html == None: continue links = searchLinks.findall (str (html)) for link in links: link = urljoin (page, str (link)) if ( linkul nu este vizitat): queue.put (link) visited.append (link) if __name__ == "__main__": crawlLinks ("http://www.solvetic.com") 
Primul lucru pe care îl facem este iimport bibliotecile necesare, pentru expresii regulate (re), pentru a utiliza coada (coadă), pentru a face cereri și a citi o pagină (urllib.request) și pentru construirea URL-urilor absolute dintr-un URL de bază și un alt URL (urljoin).

Cod împărțit în 2 funcții
a descărcaNe ajută să descărcăm html-ul unei pagini. Nu are nevoie de prea multe explicații, singurul lucru pe care îl face este o cerere către pagina dorită, își citește html-ul, dacă totul merge bine, apare un mesaj de descărcare OK și dacă nu arată că a existat o eroare (aici vom ar putea afișa informații despre eroare), la final returnează html citit sau None.
urmăriți Link-uriEste funcția principală și va rula prin fiecare link. Să explicăm puțin:

  • Creăm o variabilă cu o expresie regulată, care ne ajută să găsim linkurile în html.
  • Începem o variabilă de tip tail cu pagina inițială, ne va ajuta să salvăm linkurile în „ordinea” pe care le-am descoperit. De asemenea, începem o variabilă de tip listă numită vizitată pe care o vom folosi pentru a salva linkurile pe măsură ce sunt vizitate, acest lucru se face pentru a evita o buclă infinită, imaginați-vă că pagina x se referă la pagina y, iar aceasta la rândul său la pagina x, toate în timp ce vom insera aceste linkuri la nesfârșit.
  • Miezul funcției este bucla while, care va fi executată atâta timp cât coada are legături, așa că verificăm dacă dimensiunea este mai mare de 0. În fiecare trecere eliminăm un link din coadă și îl trimitem la funcția de descărcare , care ne va returna html-ul, apoi căutăm linkurile și verificăm dacă l-am vizitat deja, dacă nu, îl adăugăm la coadă și la listă.

NotăPoate părea că lista este de prisos, dar vom elimina și șterge linkurile din coadă, deci verificarea nu ar fi corectă, poate linkul pe care l-am vizitat acum ceva timp și nu mai este în coadă, dar va fi în listă.

Ultima parte a codului în afara funcțiilor se va ocupa de executarea codului. În imaginea următoare puteți vedea o captură de ecran a codului de rulare, urmărind solvetic.

Dacă doriți, vă puteți ajuta cu o bibliotecă care există pentru python numită BeautifulSoup, va părea foarte ușor de manevrat, o recomand.

În cazul în care doriți codul, iată un cod zip:

TraverseLinks.zip 646 octeți 493 Descărcări

V-a plăcut și ați ajutat acest tutorial?Puteți recompensa autorul apăsând acest buton pentru a-i oferi un punct pozitiv

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave