Уеб изстъргване

Уеб изстъргване с помощта на Python

Уеб изстъргване с помощта на Python
Уеб изстъргването е автоматизиран начин за извличане и обработка на информация от интернет уебсайтове в много голямо количество. Данните на уебсайтовете в интернет не са структурирани, които могат да бъдат събрани и структурирани чрез изчистване на мрежата. Търсачките като Google, Bing, Yahoo имат ботове, които изстъргват данни от интернет сайтове и ги индексират на своите страници за търсене. Данните могат да бъдат извлечени и с помощта на API, което е може би един от най-добрите начини за извличане на данни от мрежата. Известни уебсайтове като Facebook, Google, Amazon предоставят на потребителите добре структурирани API за взаимодействие с данни, но няма да видите тези API навсякъде.

Например, ако искате да получавате редовни актуализации на вашите любими продукти за оферти с отстъпки или искате да автоматизирате процеса на изтегляне на епизоди от любимия си сезон един по един и уебсайтът няма API за него, тогава единственият избор вие оставате с уеб изстъргване.Уеб изстъргването може да е незаконно на някои уебсайтове, в зависимост от това дали даден уебсайт го позволява или не. Уебсайтовете използват „роботи.txt ”файл за изрично дефиниране на URL адреси, които не могат да бъдат бракувани. Можете да проверите дали уебсайтът го позволява или не, като добавите „роботи.txt “с името на домейна на уебсайта. Например https: // www.google.com / robots.текст

В тази статия ще използваме Python за изстъргване, защото е много лесен за настройка и използване. Той има много вградени библиотеки и библиотеки на трети страни, които могат да се използват за изчистване и организиране на данни. Ще използваме две библиотеки на Python “urllib”, за да извлечем уеб страницата, и “BeautifulSoup”, за да анализираме уеб страницата, за да приложим операции по програмиране.

Как работи уеб изстъргването?

Изпращаме заявка до уеб страницата, откъдето искате да изтриете данните. Уебсайтът ще отговори на заявката с HTML съдържание на страницата. След това можем да анализираме тази уеб страница на BeautifulSoup за по-нататъшна обработка. За да извлечем уеб страницата, ще използваме библиотеката “urllib” в Python.

Urllib ще изтегли съдържанието на уеб страницата в HTML. Не можем да приложим низови операции към тази HTML уеб страница за извличане на съдържание и по-нататъшна обработка. Ще използваме библиотека на Python “BeautifulSoup”, която ще анализира съдържанието и ще извлече интересните данни.

Изстъргване на статии от Linuxhint.com

Сега, когато имаме представа за това как работи изстъргването в мрежата, нека направим малко практика. Ще се опитаме да изтрием заглавия на статии и връзки от Linuxhint.com. Така че отворете https: // linuxhint.com / във вашия браузър.

Сега натиснете CRTL + U, за да видите HTML изходния код на уеб страницата.

Копирайте изходния код и отидете на https: // htmlformatter.com /, за да прецизира кода. След прецизиране на кода е лесно да го прегледате и да намерите интересна информация.

Сега отново копирайте форматирания код и го поставете в любимия си текстов редактор като атом, възвишен текст и т.н. Сега ще изстържем интересната информация с помощта на Python. Въведете следното

// Инсталирайте красива библиотека за супи, urllib идва
предварително инсталиран в Python
ubuntu @ ubuntu: ~ $ sudo pip3 install bs4
ubuntu @ ubuntu: ~ $ python3
Python 3.7.3 (по подразбиране, 7 октомври 2019 г., 12:56:13)
[GCC 8.3.0] на linux

Въведете „помощ“, „авторско право“, „кредити“ или „лиценз“ за повече информация.

// Импортиране на urllib
>>> импортиране на urllib.заявка
// Внос на BeautifulSoup
>>> от bs4 импортирайте BeautifulSoup
// Въведете URL адреса, който искате да извлечете
>>> my_url = 'https: // linuxhint.com / '
// Поискайте URL страницата на URL адреса с помощта на командата urlopen
>>> клиент = urllib.заявка.urlopen (my_url)
// Съхраняваме HTML уеб страницата в променливата “html_page”
>>> html_page = клиент.Прочети()
// Затворете URL връзката след извличане на уеб страницата
>>> клиент.близо()
// анализираме HTML страницата на BeautifulSoup за изстъргване
>>> page_soup = BeautifulSoup (html_page, "html.парсер ")

Сега нека разгледаме HTML кода, който току-що копирахме и поставихме, за да намерим неща, които ни интересуват.

Можете да видите, че първата статия е изброена на Linuxhint.com е наречен „74 Bash Operators Examples“, намерете това в изходния код. Той е затворен между заглавни маркери и неговият код е



class = "category-1561"> Програмиране на BASH


title = "Примери за 74 Bash оператори"> 74 Bash оператори
Примери


Същият код се повтаря отново и отново със смяната на само заглавия на статии и връзки. Следващата статия има следния HTML код



class = "category-1343"> Ubuntu
Лак


title = "Как да настроите кеша за лакове на Ubuntu 18.04 ">
Как да настроите кеша за лакове на Ubuntu 18.04


Можете да видите, че всички статии, включително тези две, са затворени в един и същ “

”И използвайте същия клас“ entry-title ”. Можем да използваме функцията „findAll” в библиотеката Beautiful Soup, за да намерим и изброим всички „

”С клас„ влизане-заглавие ”. Въведете следното във вашата конзола на Python

// Тази команда ще намери всички “

”Елементи на тагове с име на клас
„Влизане-заглавие“. Резултатът ще се съхранява в масив.
>>> статии = страница_супа.findAll ("h2" ,
"class": "entry-title")
// Броят на статиите, намерени на първа страница на Linuxhint.com
>>> лен (статии)
102
// Първо извлечен “

”Елемент на етикет, съдържащ име на статия и връзка
>>> статии [0]


title = "74 Примери за баш оператори">
74 Примери за баш оператори


// Втори извлечен “

”Елемент на етикет, съдържащ име на статия и връзка
>>> статии [1]


title = "Как да настроите кеша за лакове на Ubuntu 18.04 ">
Как да настроите кеша за лакове на Ubuntu 18.04


// Показване само на текст в HTML тагове с помощта на текстова функция
>>> статии [1].текст
„Как да настроите кеша за лакове на Ubuntu 18.04 '

Сега, когато имаме списък с всичките 102 HTML “

”Таг елементи, който съдържа връзка към заглавието на статията. Можем да извлечем както връзки към статии, така и заглавия. За да извлечете връзки от „Етикети, можем да използваме следния код

// Следващият код ще извлече връзката от първо

таг елемент
>>> за връзка в статии [0].find_all ('a', href = True):
... печат (връзка ['href'])
..
https: // linuxhint.com / bash_operator_examples /

Сега можем да напишем for цикъл, който се повтаря през всеки “

Таг елемент в списъка със статии и извлечете връзката и заглавието на статията.

>>> за i в обхват (0,10):
... печат (статии [i].текст)
... за връзка в статии [i].find_all ('a', href = True):
... печат (връзка ['href'] + "\ n")
..
74 Примери за баш оператори
https: // linuxhint.com / bash_operator_examples /
Как да настроите кеша за лакове на Ubuntu 18.04
https: // linuxhint.com / varnish_cache_ubuntu_1804 /
PineTime: SmartWatch, удобен за Linux
https: // linuxhint.com / pinetime_linux_smartwatch /
10 най-добри евтини лаптопи за закупуване с ограничен бюджет
https: // linuxhint.com / best_cheap_linux_laptops /
HD Remastered Games за Linux, които никога не са имали Linux версия ..
https: // linuxhint.com / hd_remastered_games_linux /
60 FPS приложения за запис на екран за Linux
https: // linuxhint.com / 60_fps_screen_recording_apps_linux /
74 Примери за баш оператори
https: // linuxhint.com / bash_operator_examples /
... изрязване ..

По същия начин записвате тези резултати в JSON или CSV файл.

Заключение

Вашите ежедневни задачи не са само управление на файлове или изпълнение на системни команди. Можете също така да автоматизирате свързаните с мрежата задачи като автоматизация на изтегляне на файлове или извличане на данни чрез изстъргване на мрежата в Python. Тази статия беше ограничена само до просто извличане на данни, но можете да направите огромна автоматизация на задачите, като използвате „urllib“ и „BeautifulSoup“.

Как да използвам AutoKey за автоматизиране на Linux игри
AutoKey е програма за автоматизация на настолни компютри за Linux и X11, програмирана в Python 3, GTK и Qt. Използвайки неговата функционалност за скр...
Как да покажа брояч на FPS в игрите на Linux
Linux игрите получиха голям тласък, когато Valve обяви поддръжка на Linux за Steam клиент и техните игри през 2012 г. Оттогава много AAA и независими ...
Как да изтеглите и пуснете Civilization VI на Сид Майер на Linux
Въведение в играта Civilization 6 е модерен поглед върху класическата концепция, въведена в поредицата от игрите Age of Empires. Идеята беше доста про...