Skrobanie internetowe za pomocą Pythona

Skrobanie internetowe za pomocą Pythona
Skrobanie internetowe to zautomatyzowany sposób wyodrębnienia i przetwarzania informacji ze stron internetowych w bardzo dużej ilości. Dane na stronach internetowych nie są ustrukturyzowane, które można gromadzić i ustrukturyzować poprzez skrobanie internetowe. Wyszukiwarki takie jak Google, Bing, Yahoo mają boty, które zeskrobują dane ze stron internetowych i indeksuje je na stronach wyszukiwania. Dane można również wyodrębnić za pomocą interfejsów API, co jest prawdopodobnie jednym z najlepszych sposobów wyodrębnienia danych z Internetu. Słynne strony internetowe, takie jak Facebook, Google, Amazon, zapewniają użytkownikom dobrze ustrukturyzowane interfejsy API do interakcji z danymi, ale nie zobaczysz tych interfejsów API wszędzie.

Na przykład, jeśli chcesz regularne aktualizacje swoich ulubionych produktów do ofert rabatowych lub chcesz zautomatyzować proces pobierania odcinków ulubionego sezonu po drugim, a strona internetowa nie ma dla niego żadnego interfejsu API, to jedyny wybór Zostajesz z skrobaniem internetowym.Skrobanie internetowe może być nielegalne na niektórych stronach internetowych, w zależności od tego, czy strona internetowa na to pozwala, czy nie. Strony internetowe używają „Robotów.plik txt ”w celu wyraźnego zdefiniowania adresów URL, które nie mogą być złomowane. Możesz sprawdzić, czy witryna to pozwala, czy nie, dołączając „Roboty.TXT ”z nazwą domeny strony internetowej. Na przykład https: // www.Google.com/roboty.tekst

W tym artykule użyjemy Pythona do skrobania, ponieważ jest bardzo łatwa w konfiguracji i użyciu. Ma wiele wbudowanych i zewnętrznych bibliotek, które mogą być używane do skrapania się i organizowania danych. Użyjemy dwóch bibliotek Python „urllib” do pobrania strony internetowej i „pięknej grupy”, aby parsować stronę internetową, aby zastosować operacje programowe.

Jak działa skrobanie internetowe?

Wysyłamy prośbę na stronę internetową, skąd chcesz zeskrobać dane. Witryna odpowie na żądanie z zawartością HTML strony. Następnie możemy przeanalizować tę stronę do BeautifulSoup w celu dalszego przetwarzania. Aby pobrać stronę internetową, użyjemy biblioteki „urllib” w Python.

Urllib pobranie zawartości strony internetowej w HTML. Nie możemy zastosować operacji ciągów do tej strony internetowej HTML w celu ekstrakcji treści i dalszego przetwarzania. Użyjemy biblioteki Python „BeautifulSoup”, która przeanalizuje treść i wyodrębni interesujące dane.

Scrapowanie artykułów z Linuxhint.com

Teraz, gdy mamy pojęcie o tym, jak działa skrobanie internetowe, wykonajmy praktykę. Postaramy się zeskrobać tytuły i linki z Linuxhint.com. Więc otwórz https: // linuxhint.com/ w przeglądarce.

Teraz naciśnij CRTL+U, aby wyświetlić kod źródłowy HTML strony strony internetowej.

Skopiuj kod źródłowy i przejdź do https: // htmlformatter.com/ do upiększania kodu. Po upiększeniu kodu łatwo jest sprawdzić kod i znaleźć interesujące informacje.

Teraz ponownie skopiuj sformatowany kod i wklej go w swoim ulubionym edytorze tekstu, takim jak Atom, wysublimowany tekst itp. Teraz zeskrobem ciekawe informacje za pomocą Pythona. Wpisz następujące

// Zainstaluj piękną bibliotekę zup, urllib przychodzi
wstępnie zainstalowany w Python
Ubuntu@ubuntu: ~ $ sudo pip3 instaluj bs4
Ubuntu@ubuntu: ~ $ python3
Python 3.7.3 (domyślnie, 7 października 2019, 12:56:13)
[GCC 8.3.0] w Linux

Wpisz „Pomoc”, „Copyright”, „Kredyty” lub „Licencja”, aby uzyskać więcej informacji.

// Importuj urllib
>>> Importuj urllib.wniosek
// Importuj BeautifulSoup
>>> z BS4 import pięknej grupy
// Wprowadź adres URL, który chcesz pobrać
>>> my_url = 'https: // Linuxhint.com/'
// poproś o stronę URL za pomocą polecenia URLOPEN
>>> klient = urllib.wniosek.urlopen (my_url)
// Przechowuj stronę internetową HTML w zmiennej „html_page”
>>> html_page = klient.Czytać()
// Zamknij połączenie URL po pobraniu strony internetowej
>>> Klient.zamknąć()
// Paruj stronę HTML do BeautifulSoup do skrobania
>>> page_soup = beautifulSoup (html_page, „html.Parser ”)

Teraz spójrzmy na kod źródłowy HTML, który właśnie skopiowaliśmy i wkleiliśmy, aby znaleźć rzeczy naszego zainteresowania.

Możesz zobaczyć, że pierwszy artykuł wymieniony na Linuxhint.Com nazywa się „74 przykładami operatorów bash”, znajdź to w kodzie źródłowym. Jest zamknięty między znacznikami nagłówka, a jego kod jest



class = "kategoria 1561"> BASH Programowanie


title = "74 Operatory bash
Przykłady


Ten sam kod powtarza się w kółko wraz ze zmianą samych tytułów i linków. Następny artykuł zawiera następujący kod HTML



class = "kategoria 1343"> ubuntu • •


title = "Jak skonfigurować pamięć podręczną lakieru na Ubuntu 18.04 ">
Jak skonfigurować pamięć podręczną na Ubuntu 18.04


Możesz zobaczyć, że wszystkie artykuły, w tym te dwa, są zamknięte w tym samym „”

„Oznacz i użyj tej samej klasy„ wejście ”. Możemy użyć funkcji „Findall” w pięknej bibliotece zup, aby znaleźć i wymienić wszystko ”

„Posiadanie klasy„ wejście ”. Wpisz następujące w swojej konsoli Python

// To polecenie znajdzie wszystko „

”Elementy tagowe posiadające nazwę klasy
„Wejście”. Wyjście będzie przechowywane w tablicy.
>>> Artykuły = page_soup.FINDALL („H2” ,
„class”: „wejście”)
// Liczba artykułów znalezionych na pierwszej stronie Linuxhint.com
>>> Len (artykuły)
102
// po raz pierwszy wyodrębniono „

„Element tagu zawierający nazwę artykułu i link
>>> Artykuły [0]


title = "74 Operatory bashów przykłady">
74 Przykłady operatorów bashów


// Drugi wyodrębniony „

„Element tagu zawierający nazwę artykułu i link
>>> Artykuły [1]


title = "Jak skonfigurować pamięć podręczną lakieru na Ubuntu 18.04 ">
Jak skonfigurować pamięć podręczną na Ubuntu 18.04


// Wyświetlanie tylko tekstu w znacznikach HTML za pomocą funkcji tekstu
>>> Artykuły [1].tekst
„Jak skonfigurować pamięć podręczną na Ubuntu 18.04 '

Teraz, gdy mamy listę wszystkich 102 HTML ”

”Elementy tagu zawierające link artykułu i tytuł artykułu. Możemy wyodrębnić oba artykuły i tytuły. Aby wyodrębnić linki z tagów „”, możemy użyć następującego kodu

// Poniższy kod wyodrębni link od pierwszego

element tag
>>> dla linku w artykułach [0].Find_All („a”, href = true):
… Drukuj (link ['href'])

https: // linuxhint.com/bash_operator_examples/

Teraz możemy napisać pętlę, która iteruje każdą „

„Element tagu na liście„ artykułów ”i wyodrębnij link i tytuł artykułu.

>>> Dla I w zakresie (0,10):
… Drukuj (artykuły [i].tekst)
… Link w artykułach [i].Find_All („a”, href = true):
… Drukuj (link ['href']+"\ n")

74 Przykłady operatorów bashów
https: // linuxhint.com/bash_operator_examples/
Jak skonfigurować pamięć podręczną na Ubuntu 18.04
https: // linuxhint.com/varnish_cache_ubuntu_1804/
Pinetime: smartwatch przyjazny dla systemu Linuksa
https: // linuxhint.com/pinetime_linux_smartwatch/
10 najlepszych tanich laptopów Linux do zakupu przy ograniczonym budżecie
https: // linuxhint.com/best_cheap_linux_laptops/
HD Remastered Games dla Linux, które nigdy nie miały wydania Linux…
https: // linuxhint.com/hd_remastered_games_linux/
60 aplikacji do nagrywania ekranu FPS dla Linux
https: // linuxhint.com/60_fps_screen_recording_apps_linux/
74 Przykłady operatorów bashów
https: // linuxhint.com/bash_operator_examples/
… Snip…

Podobnie zapisujesz te wyniki na pliku JSON lub CSV.

Wniosek

Twoje codzienne zadania nie są nie tylko zarządzania plikami lub wykonywaniem poleceń systemowych. Możesz także zautomatyzować zadania związane z siecią, takie jak automatyzacja pobierania plików lub ekstrakcja danych, zeskrobując sieć w Python. Ten artykuł był ograniczony tylko do prostej ekstrakcji danych, ale możesz wykonać ogromną automatyzację zadań za pomocą „urllib” i „pięknej grupy”.