Web Scraping

Skrobanie stron internetowych za pomocą Pythona

Skrobanie stron internetowych za pomocą Pythona
Web scraping to zautomatyzowany sposób na wydobywanie i przetwarzanie informacji ze stron internetowych w bardzo dużej ilości. Dane na stronach internetowych nie są ustrukturyzowane, co można zbierać i porządkować za pomocą web scrapingu. Wyszukiwarki takie jak Google, Bing, Yahoo mają boty, które pobierają dane ze stron internetowych i indeksują je na swoich stronach wyszukiwania. Dane można również wyodrębnić za pomocą interfejsów API, co jest prawdopodobnie jednym z najlepszych sposobów wyodrębniania danych z sieci. Znane witryny, takie jak Facebook, Google, Amazon, zapewniają użytkownikom dobrze ustrukturyzowane interfejsy API do interakcji z danymi, ale nie wszędzie zobaczysz te interfejsy API.

Na przykład, jeśli chcesz otrzymywać regularne aktualizacje swoich ulubionych produktów z ofertami rabatowymi lub chcesz zautomatyzować proces pobierania odcinków ulubionego sezonu jeden po drugim, a strona internetowa nie ma do tego żadnego API, to jedyny wybór Pozostaje ci web scraping.Web scraping może być nielegalny na niektórych stronach internetowych, w zależności od tego, czy strona na to pozwala, czy nie. Strony internetowe używają „robotów.txt” w celu jawnego zdefiniowania adresów URL, których nie można usuwać. Możesz sprawdzić, czy strona na to pozwala, czy nie, dodając „roboty.txt” z nazwą domeny witryny. Na przykład https://www.Google.com/roboty.tekst

W tym artykule użyjemy Pythona do scrapingu, ponieważ jest bardzo łatwy w konfiguracji i użyciu. Ma wiele wbudowanych i zewnętrznych bibliotek, które mogą być używane do scrapingu i organizowania danych. Użyjemy dwóch bibliotek Pythona „urllib” do pobrania strony internetowej i „BeautifulSoup” do przeanalizowania strony internetowej w celu zastosowania operacji programistycznych.

Jak działa skrobanie stron internetowych?

Wysyłamy zapytanie na stronę, z której chcesz pobrać dane. Witryna odpowie na żądanie zawartością HTML strony. Następnie możemy przetworzyć tę stronę do BeautifulSoup w celu dalszego przetwarzania. Aby pobrać stronę internetową, użyjemy biblioteki „urllib” w Pythonie.

Urllib pobierze zawartość strony internetowej w formacie HTML. Nie możemy zastosować operacji na ciągach znaków na tej stronie HTML w celu wyodrębnienia treści i dalszego przetwarzania. Wykorzystamy bibliotekę Pythona „BeautifulSoup”, która przeanalizuje zawartość i wyodrębni interesujące dane.

Skrobanie artykułów z Linuxhint.com

Teraz, gdy mamy już pomysł na działanie web scrapingu, poćwiczmy. Postaramy się zeskrobać tytuły artykułów i linki z Linuxhint.com. Więc otwórz https://linuxhint.com/ w Twojej przeglądarce.

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

Skopiuj kod źródłowy i przejdź do https://htmlformatter.com/ upiększyć kod. Po upiększeniu kodu łatwo go sprawdzić i znaleźć ciekawe informacje.

Teraz ponownie skopiuj sformatowany kod i wklej go do swojego ulubionego edytora tekstu, takiego jak atom, wysublimowany tekst itp. Teraz przeszukamy interesujące informacje za pomocą Pythona. Wpisz następujące

// Zainstaluj piękną bibliotekę zup, nadchodzi urllib
preinstalowany w Pythonie
ubuntu@ubuntu:~$ sudo pip3 zainstaluj bs4
ubuntu@ubuntu:~$ python3
Pyton 3.7.3 (domyślnie, 7 października 2019, 12:56:13)
[RWP 8.3.0] na Linuksie

Wpisz „pomoc”, „prawa autorskie”, „kredyty” lub „licencja”, aby uzyskać więcej informacji.

//Importuj bibliotekę url
>>> importuj bibliotekę url.żądanie
//Importuj piękną zupę
>>> import z bs4 BeautifulSoup
//Wprowadź adres URL, który chcesz pobrać
>>> mój_url = 'https://linuxhint.pl/'
//Zażądaj adresu URL za pomocą polecenia urlopen
>>> klient = urllib.żądanie.urlopen(mój_url)
//Przechowuj stronę internetową HTML w zmiennej „html_page”
>>> html_page = klient.czytać()
//Zamknij połączenie URL po pobraniu strony internetowej
>>> klient.blisko()
//przeanalizuj stronę HTML do BeautifulSoup do skrobania
>>> page_soup = PięknaZupa(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źć interesujące nas rzeczy.

Widać, że pierwszy artykuł na Linuxhint.com nosi nazwę „74 przykłady operatorów Bash”, znajdź to w kodzie źródłowym. Jest zawarty między tagami nagłówka, a jego kod to



class="category-1561">Programowanie BASH


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


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



class="category-1343">Ubuntu
Lakier


title="Jak skonfigurować pamięć podręczną lakierów na Ubuntu 18.04">
Jak skonfigurować pamięć podręczną lakierów na Ubuntu 18.04


Widać, że wszystkie artykuły, w tym te dwa, są ujęte w tym samym „

” i użyj tej samej klasy „tytuł-wpisu”. Możemy użyć funkcji „znajdź wszystko” w bibliotece Piękna zupa, aby znaleźć i wyświetlić wszystkie „

” mający klasę „tytuł-wpisu”. Wpisz następujące polecenie w konsoli Pythona

// To polecenie znajdzie wszystkie „

” elementy znaczników o nazwie klasy
„tytuł-wpisu”. Dane wyjściowe zostaną zapisane w tablicy.
>>> artykuły = zupa_strona.znajdźWszystko("h2" ,
"klasa" : "tytuł-wpisu")
// Liczba artykułów znalezionych na stronie głównej Linuxhint.com
>>> len(artykuły)
102
// Pierwszy wyodrębniony „

” element tagu zawierający nazwę artykułu i link
>>> artykuły[0]


title="74 Przykłady operatorów Bash">
74 Przykłady operatorów Bash


// Drugi wyodrębniony „

” element tagu zawierający nazwę artykułu i link
>>> artykuły[1]


title="Jak skonfigurować pamięć podręczną lakierów na Ubuntu 18.04">
Jak skonfigurować pamięć podręczną lakierów na Ubuntu 18.04


// Wyświetlanie tylko tekstu w znacznikach HTML za pomocą funkcji tekstowej
>>> artykuły[1].tekst
'Jak skonfigurować pamięć podręczną lakierów na Ubuntu 18?.04'

Teraz, gdy mamy listę wszystkich 102 HTML „

” elementy tagów zawierające link do artykułu i tytuł artykułu. Możemy wyodrębnić zarówno linki do artykułów, jak i tytuły. Aby wyodrębnić linki z „” tagi, możemy użyć następującego kodu

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

element tagu
>>> dla linku w artykułach[0].find_all('a', href=True):
…    print(link['href'])

https://linuxhint.com/bash_operator_examples/

Teraz możemy napisać pętlę for, która iteruje przez każdy „

” oznaczyć element na liście „artykuły” i wyodrębnić link do artykułu oraz tytuł.

>>> dla i w zakresie (0,10):
…    drukuj(artykuły[i].tekst)
…    dla linku w artykułach[i].find_all('a', href=True):
…            print(link['href']+"\n")

74 Przykłady operatorów Bash
https://linuxhint.com/bash_operator_examples/
Jak skonfigurować pamięć podręczną lakierów na Ubuntu 18.04
https://linuxhint.com/varnish_cache_ubuntu_1804/
PineTime: smartwatch przyjazny dla Linuksa
https://linuxhint.pl/pinetime_linux_smartwatch/
10 najlepszych tanich laptopów z systemem Linux do kupienia z ograniczonym budżetem
https://linuxhint.com/best_cheap_linux_laptops/
Zremasterowane gry HD dla Linuksa, które nigdy nie zostały wydane na Linuksa…
https://linuxhint.com/hd_remastered_games_linux/
Aplikacje do nagrywania ekranu 60 FPS dla systemu Linux
https://linuxhint.com/60_fps_screen_recording_apps_linux/
74 Przykłady operatorów Bash
https://linuxhint.com/bash_operator_examples/
… ciach…

Podobnie zapisujesz te wyniki w pliku JSON lub CSV.

Wniosek

Twoje codzienne zadania to nie tylko zarządzanie plikami czy wykonywanie poleceń systemowych. Możesz także zautomatyzować zadania związane z siecią, takie jak automatyzacja pobierania plików lub ekstrakcja danych, poprzez scraping sieci w Python. Ten artykuł ograniczał się tylko do prostej ekstrakcji danych, ale możesz wykonać ogromną automatyzację zadań za pomocą „urllib” i „BeautifulSoup”.

Najlepsze dystrybucje Linuksa do gier w 2021 r
System operacyjny Linux przeszedł długą drogę od pierwotnego, prostego, serwerowego wyglądu. Ten system operacyjny znacznie się poprawił w ostatnich l...
Gry Jak przechwytywać i przesyłać strumieniowo sesję gry w systemie Linux
Jak przechwytywać i przesyłać strumieniowo sesję gry w systemie Linux
W przeszłości granie w gry było uważane tylko za hobby, ale z czasem branża gier odnotowała ogromny wzrost pod względem technologii i liczby graczy. P...
Gry Najlepsze gry do grania ze śledzeniem rąk
Najlepsze gry do grania ze śledzeniem rąk
Oculus Quest niedawno wprowadził świetny pomysł śledzenia rąk bez kontrolerów. Przy stale rosnącej liczbie gier i działań, które wspierają zarówno for...