Kako pratiti veze na webu pomoću Pythona

Sadržaj

Danas ću vas naučiti prolazite kroz veze na stranici s Pythonom (struganje weba), ovo može biti vrlo korisno za automatsko praćenje sadržaja na web stranici i ne morate to raditi ručno. U programu koji donosim, svaka veza se dobiva čitanjem html -a, možete promijeniti program tako da traži određeni sadržaj i prikazuje samo veze za koje ste zainteresirani.

Također možete napraviti struganje weba pomoću datoteke robots.txt ili karti web stranica koje web stranice imaju.

BilješkaPrikazani kôd radi u Pythonu 3.x, ako ga želite pokrenuti u verziji 2.x, morat ćete unijeti male izmjene.

Evo koda:

 uvozni red uvoz urllib.request uvoz re iz urllib.parse uvoz urljoin def preuzimanje (stranica): try: request = urllib.request.Request (page) html = urllib.request.urlopen (request) .read () print ("[ *] Preuzmite U redu >> ", stranica) osim: print ('[!] Pogreška pri preuzimanju', stranica) return Ništa ne vraća html def crawlLinks (stranica): searchLinks = re.compile ('] + href = ["'] ( . *?) ["']', re.IGNORECASE) queue = queue.Queue () queue.put (stranica) posjećeno = [page] print (" Traženje veza u ", stranica) while (queue.qsize () > 0): html = download (queue.get ()) if html == None: continue links = searchLinks.findall (str (html)) za vezu u vezama: link = urljoin (stranica, str (veza)) if ( veza nije u posjećenom): queue.put (veza) visit.append (link) if __name__ == "__main__": crawlLinks ("http://www.solvetic.com") 
Prvo što radimo je jauvesti potrebne knjižnice, za regularne izraze (re), za korištenje reda (red), za podnošenje zahtjeva i čitanje stranice (urllib.request) te za izradu apsolutnih URL -ova iz osnovnog URL -a i drugog URL -a (urljoin).

Kod podijeljen u 2 funkcije
preuzetiPomaže nam u preuzimanju html stranice. Ne treba puno objašnjenja, jedino što čini je zahtjev do željene stranice, čitanje njezinog html -a, ako sve prođe dobro, prikazuje poruku Preuzmi u redu, a ako ne pokazuje da je došlo do pogreške (Ovdje smo mogao prikazati podatke o pogrešci), na kraju vraća html čitanje ili Ništa.
track LinksTo je glavna funkcija i prolazit će kroz svaku vezu. Objasnimo to malo:

  • Stvaramo varijablu s regularnim izrazom, koja nam pomaže pronaći veze u html -u.
  • Pokrećemo varijablu tipa tail s početnom stranicom, što će nam pomoći da veze spremimo u "redoslijedu" kojim smo ih otkrili. Pokrećemo i varijablu vrste popisa zvanu posjećena koju ćemo koristiti za spremanje veza dok su posjećene, to se radi kako bi se izbjegla beskonačna petlja, zamislite da se stranica x odnosi na stranicu y, a to zauzvrat na stranicu x, sve dok ćemo ove veze umetati beskrajno.
  • Jezgra funkcije je while petlja, koja će se izvršavati sve dok red ima veze, pa provjeravamo je li veličina veća od 0. U svakom prolazu uklanjamo vezu iz reda i šaljemo je funkciji za preuzimanje , koji će nam vratiti html, tada tražimo veze i provjeravamo jesmo li ga već posjetili, ako ne, dodajemo ga u red čekanja i na popis.

BilješkaMožda se čini da je popis suvišan, ali mi ćemo ukloniti i izbrisati veze iz reda pa provjera ne bi bila točna, možda veza koju smo maloprije posjetili i više nije u redu, ali bit će na popisu.

Posljednji dio koda izvan funkcija pobrinut će se za izvršavanje koda. Na sljedećoj slici možete vidjeti snimak zaslona tekućeg koda, rješavajući praćenje.

Ako želite, možete si pomoći s bibliotekom koja postoji za python pod nazivom BeautifulSoup, činit će se da je vrlo laka za rukovanje, preporučujem.

U slučaju da želite kôd, ovdje je poštanski broj:

TraverseLinks.zip 646 bajtova 493 preuzimanja

Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave