Как да проследявате връзки в мрежата с помощта на Python

Съдържание

Днес ще ви науча цикъл през връзки на страница с Python (изстъргване на мрежата), това може да бъде много полезно за автоматично проследяване на съдържание на уебсайт и не е необходимо да го правите на ръка. В програмата, която предлагам, всяка връзка се получава чрез четене на html, можете да промените програмата, за да търсите определено съдържание и да показвате само връзките, от които се интересувате.

Можете също така да направите остъргване в мрежата, като използвате файла robots.txt или картите на сайтовете, които уебсайтовете имат.

ЗабележкаПоказаният код работи в Python 3.x, ако искате да го стартирате във версия 2.x, ще трябва да направите малки модификации.

Ето кода:

 опашка за импортиране импортиране urllib.request импортиране повторно от urllib.parse внос urljoin def изтегляне (страница): try: request = urllib.request.Request (страница) html = urllib.request.urlopen (request) .read () print ("[ *] Изтеглете OK >> ", страница) с изключение на: print ('[!] Грешка при изтегляне', страница) return None връщане html def crawlLinks (страница): searchLinks = re.compile ('] + href = ["'] ( * > 0): html = download (queue.get ()) if html == None: continue links = searchLinks.findall (str (html)) за връзка в връзки: link = urljoin (страница, str (връзка)) if ( връзка, която не е в посещение): queue.put (връзка) visit.append (връзка), ако __name__ == "__main__": crawlLinks ("http://www.solvetic.com") 
Първото нещо, което правим, е азимпортирайте необходимите библиотеки, за редовни изрази (re), за използване на опашката (опашка), за отправяне на заявки и четене на страница (urllib.request) и за конструиране на абсолютни URL адреси от основен URL адрес и друг URL адрес (urljoin).

Код, разделен на 2 функции
за изтеглянеПомага ни да изтеглим html на страница. Не се нуждае от много обяснения, единственото нещо, което прави, е заявка към желаната страница, чете html, ако всичко върви добре, показва съобщение за изтегляне на OK и ако не показва, че е имало грешка (Тук ние може да покаже информация за грешката), в края връща html прочетено или Няма.
проследяване на връзкиТова е основната функция и ще се изпълнява през всяка връзка. Нека го обясним малко:

  • Създаваме променлива с регулярен израз, който ни помага да намерим връзките в html.
  • Стартираме променлива от тип tail с началната страница, тя ще ни помогне да запазим връзките в "реда", в който сме ги открили. Също така стартираме променлива тип списък, наречена посети, която ще използваме, за да запазим връзките при тяхното посещение, това се прави, за да се избегне безкраен цикъл, представете си, че страница x се отнася до страница y, а това от своя страна към страница x, всички докато ние ще вмъкваме тези връзки безкрайно.
  • Ядрото на функцията е цикълът while, който ще се изпълнява, докато опашката има връзки, затова проверяваме дали размерът е по -голям от 0. При всяко преминаване премахваме връзка от опашката и я изпращаме до функцията за изтегляне , което ще ни върне html, след това търсим връзките и проверяваме дали вече сме го посетили, ако не, го добавяме към опашката и към списъка.

ЗабележкаМоже да изглежда, че списъкът е излишен, но ние ще премахнем и изтрием връзките от опашката, така че проверката няма да е правилна, може би връзката, която посетихме преди малко и вече не е на опашката, но тя ще бъде в списъка.

Последната част от кода извън функциите ще се погрижи за изпълнението на кода. На следното изображение можете да видите екранна снимка на изпълняващия се код, проследяващ решението.

Ако искате, можете да си помогнете с библиотека, която съществува за python, наречена BeautifulSoup, тя ще изглежда много лесна за работа, препоръчвам я.

В случай, че искате кода, ето цип:

TraverseLinks.zip 646 байта 493 изтегляния

Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка
wave wave wave wave wave