logo

Samouczek dotyczący skrobania sieci w języku Python

Web scraping, proces wydobywania danych ze stron internetowych, stał się potężną techniką gromadzenia informacji z ogromnej przestrzeni Internetu. W tym samouczku przyjrzymy się różnym bibliotekom i modułom Pythona powszechnie używanym do skrobania stron internetowych i zastanowimy się, dlaczego Python 3 jest preferowanym wyborem do tego zadania.

Niezbędne pakiety i narzędzia do skrobania sieci w języku Python

Najnowsza wersja Pyton , oferuje bogaty zestaw narzędzi i bibliotek zaprojektowanych specjalnie do przeglądania stron internetowych, dzięki czemu wydajne i skuteczne pobieranie danych z Internetu jest łatwiejsze niż kiedykolwiek.



Spis treści

Moduł żądań

Biblioteka żądań służy do wysyłania żądań HTTP do określonego adresu URL i zwraca odpowiedź. Żądania w języku Python zapewniają wbudowane funkcje zarządzania zarówno żądaniami, jak i odpowiedziami.

pip install requests>

Przykład: składanie wniosku

Moduł żądań Pythona ma kilka wbudowanych metod wysyłania żądań HTTP do określonego URI przy użyciu żądań GET, POST, PUT, PATCH lub HEAD. Żądanie HTTP ma na celu pobranie danych z określonego identyfikatora URI lub przesłanie danych na serwer. Działa jako protokół żądanie-odpowiedź pomiędzy klientem a serwerem. Tutaj będziemy używać żądania GET. The Metoda POBIERZ służy do pobrania informacji z danego serwera przy użyciu danego URI. Metoda GET wysyła zakodowane informacje o użytkowniku dołączone do żądania strony.



Pyton
import requests # Making a GET request r = requests.get('https://www.techcodeview.com) # check status code for response received # success code - 200 print(r) # print content of request print(r.content)>

Wyjście

Żądania Pythona wysyłające żądanie GET

Więcej informacji znajdziesz w naszym Python prosi o samouczek .



Biblioteka pięknych zup

Beautiful Soup udostępnia kilka prostych metod i wyrażeń Pythona do kierowania, wyszukiwania i zmiany drzewa analizy: zestaw narzędzi do studiowania dokumentu i usuwania tego, czego potrzebujesz. Udokumentowanie aplikacji nie wymaga dużo kodu.

Beautiful Soup automatycznie konwertuje przychodzące rekordy do Unicode i formularze wychodzące do UTF-8. Nie musisz myśleć o kodowaniu, chyba że dokument nie definiuje kodowania, a Beautiful Soup nie może go złapać. Następnie musisz tylko wybrać oryginalne kodowanie. Beautiful Soup opiera się na znanych parserach Pythona, takich jak LXML i HTML, umożliwiając wypróbowanie różnych strategii analizowania lub zamianę szybkości na elastyczność.

pip install beautifulsoup4>

Przykład

  1. Importowanie bibliotek: Kod importuje bibliotekę żądań do tworzenia żądań HTTP i klasę BeautifulSoup z biblioteki bs4 do analizowania kodu HTML.
  2. Składanie żądania GET: Wysyła żądanie GET do „https://www.techcodeview.com”.
  3. Sprawdzanie kodu stanu: Drukuje kod stanu odpowiedzi, zazwyczaj 200 dla powodzenia.
  4. Parsowanie kodu HTML : Zawartość HTML odpowiedzi jest analizowana przy użyciu BeautifulSoup i zapisywana w zmiennej zupa.
  5. Drukowanie uproszczonego kodu HTML: Drukuje uproszczoną wersję przeanalizowanej treści HTML w celu zapewnienia czytelności i analizy.
Pyton
import requests from bs4 import BeautifulSoup # Making a GET request r = requests.get('https://www.techcodeview.com) # check status code for response received # success code - 200 print(r) # Parsing the HTML soup = BeautifulSoup(r.content, 'html.parser') print(soup.prettify())>

Wyjście

Python BeautifulSoup analizuje kod HTML

Znajdowanie elementów według klas

Teraz chcielibyśmy wyodrębnić przydatne dane z zawartości HTML. Obiekt zupy zawiera wszystkie dane w zagnieżdżonej strukturze, które można programowo wyodrębnić. Witryna, którą chcemy zeskrobać, zawiera dużo tekstu, więc teraz zeskrobujmy całą tę zawartość. Najpierw sprawdźmy stronę, którą chcemy zeskrobać.


if else instrukcja Java

Na powyższym obrazku widzimy, że cała zawartość strony znajduje się pod elementem div z zawartością wpisu klasy. Będziemy używać klasy find. Klasa ta znajdzie podany tag z podanym atrybutem. W naszym przypadku znajdzie wszystkie elementy div posiadające klasę jako treść wpisu.

Widzimy, że zawartość strony znajduje się pod

etykietka. Teraz musimy znaleźć wszystkie znaczniki p obecne w tej klasie. Możemy skorzystać zZnajdź wszystko klasa BeautifulSoup.

Pyton
import requests from bs4 import BeautifulSoup # Making a GET request r = requests.get('https://www.techcodeview.com) # Parsing the HTML soup = BeautifulSoup(r.content, 'html.parser') s = soup.find('div', class_='entry-content') content = s.find_all('p') print(content)>

Wyjście:

find_all bs4

Więcej informacji znajdziesz w naszym Pytonowa piękna zupa .

Selen

Selenium to popularny moduł Pythona służący do automatyzacji przeglądarek internetowych. Umożliwia programistom programowe kontrolowanie przeglądarek internetowych, umożliwiając wykonywanie takich zadań, jak przeglądanie sieci, automatyczne testowanie i interakcja z aplikacjami internetowymi. Selenium obsługuje różne przeglądarki internetowe, w tym Chrome, Firefox, Safari i Edge, co czyni go wszechstronnym narzędziem do automatyzacji przeglądarek.

Przykład 1: Dla Firefoksa

W tym konkretnym przykładzie kierujemy przeglądarkę do strony wyszukiwania Google z parametrem zapytania geeksforgeeks. Przeglądarka załaduje tę stronę, a następnie będziemy mogli przystąpić do interakcji z nią programowo za pomocą Selenium. Ta interakcja może obejmować zadania takie jak wyodrębnianie wyników wyszukiwania, klikanie łączy lub pobieranie określonej treści ze strony.

Pyton
# import webdriver  from selenium import webdriver # create webdriver object  driver = webdriver.Firefox() # get google.co.in  driver.get('https://google.co.in / search?q = geeksforgeeks')>

Wyjście

dla Firefoksa

och, przesunięcie ku czerwieni

Przykład 2: dla Chrome

  1. Importujemy moduł webdrivera z biblioteki Selenium.
  2. Podajemy ścieżkę do pliku wykonywalnego sterownika sieciowego. Należy pobrać odpowiedni sterownik dla swojej przeglądarki i podać ścieżkę do niego. W tym przykładzie używamy sterownika Chrome.
  3. Tworzymy nową instancję przeglądarki internetowej za pomocą webdriver.Chrome() i jako argument przekazujemy ścieżkę do pliku wykonywalnego sterownika Chrome.
  4. Do strony WWW przechodzimy wywołując metodę get() na obiekcie przeglądarki i przekazując adres URL strony.
  5. Wydobywamy informacje ze strony internetowej różnymi metodami udostępnianymi przez Selenium. W tym przykładzie tytuł strony pobieramy za pomocą atrybutu title obiektu przeglądarki.
  6. Na koniec zamykamy przeglądarkę za pomocą metody Quit().
Pyton
# importing necessary packages from selenium import webdriver from selenium.webdriver.common.by import By from webdriver_manager.chrome import ChromeDriverManager # for holding the resultant list element_list = [] for page in range(1, 3, 1): page_url = 'https://webscraper.io/test-sites/e-commerce/static/computers/laptops?page=' + str(page) driver = webdriver.Chrome(ChromeDriverManager().install()) driver.get(page_url) title = driver.find_elements(By.CLASS_NAME, 'title') price = driver.find_elements(By.CLASS_NAME, 'price') description = driver.find_elements(By.CLASS_NAME, 'description') rating = driver.find_elements(By.CLASS_NAME, 'ratings') for i in range(len(title)): element_list.append([title[i].text, price[i].text, description[i].text, rating[i].text]) print(element_list) #closing the driver driver.close()>

Wyjście

Więcej informacji znajdziesz w naszym Selen w Pythonie .

Lxml

Moduł lxml w Pythonie to potężna biblioteka do przetwarzania dokumentów XML i HTML. Zapewnia wysokowydajne możliwości analizowania XML i HTML wraz z prostym interfejsem API Pythona. lxml jest szeroko stosowany w skrobaniu stron internetowych w języku Python ze względu na jego szybkość, elastyczność i łatwość użycia.

pip install lxml>

Przykład

Oto prosty przykład pokazujący, jak używać modułu lxml do skrobania sieci w Pythonie:

  1. Importujemy moduł html z lxml wraz z modułem żądań do wysyłania żądań HTTP.
  2. Definiujemy adres URL witryny, którą chcemy zeskrobać.
  3. Wysyłamy do witryny żądanie HTTP GET za pomocą funkcji request.get() i pobieramy zawartość HTML strony.
  4. Analizujemy zawartość HTML za pomocą funkcji html.fromstring() z lxml, która zwraca drzewo elementów HTML.
  5. Używamy wyrażeń XPath do wyodrębniania określonych elementów z drzewa HTML. W tym przypadku wyodrębniamy zawartość tekstową wszystkich plików (kotwiczące) elementy na stronie.
  6. Iterujemy po wyodrębnionych tytułach linków i drukujemy je.
Pyton
from lxml import html import requests # Define the URL of the website to scrape url = 'https://example.com' # Send an HTTP request to the website and retrieve the HTML content response = requests.get(url) # Parse the HTML content using lxml tree = html.fromstring(response.content) # Extract specific elements from the HTML tree using XPath # For example, let's extract the titles of all the links on the page link_titles = tree.xpath('//a/text()') # Print the extracted link titles for title in link_titles: print(title)>

Wyjście

More information...>

Moduł Urllib

Moduł urllib w Pythonie to wbudowana biblioteka udostępniająca funkcje do pracy z adresami URL. Umożliwia interakcję ze stronami internetowymi poprzez pobieranie adresów URL (Uniform Resource Locators), otwieranie i odczytywanie z nich danych oraz wykonywanie innych zadań związanych z adresami URL, takich jak kodowanie i analizowanie. Urllib to pakiet, który gromadzi kilka modułów do pracy z adresami URL, takich jak:

  • urllib.request do otwarcia i przeczytania.
  • urllib.parse do analizowania adresów URL
  • urllib.error dla zgłoszonych wyjątków
  • urllib.robotparser do analizowania plików robot.txt

Jeśli w Twoim środowisku nie ma urllib, wykonaj poniższy kod, aby go zainstalować.

pip install urllib3>

Przykład

Oto prosty przykład pokazujący, jak użyć modułu urllib do pobrania zawartości strony internetowej:

  1. Definiujemy adres URL strony internetowej, którą chcemy pobrać.
  2. Do otwarcia adresu URL i uzyskania obiektu odpowiedzi używamy funkcji urllib.request.urlopen().
  3. Treść obiektu odpowiedzi odczytujemy metodą read().
  4. Ponieważ treść jest zwracana w bajtach, dekodujemy ją do postaci ciągu znaków za pomocą metody decode() z kodowaniem „utf-8”.
  5. Na koniec drukujemy zawartość HTML strony internetowej.
Pyton
import urllib.request # URL of the web page to fetch url = 'https://www.example.com' try: # Open the URL and read its content response = urllib.request.urlopen(url) # Read the content of the response data = response.read() # Decode the data (if it's in bytes) to a string html_content = data.decode('utf-8') # Print the HTML content of the web page print(html_content) except Exception as e: print('Error fetching URL:', e)>

Wyjście

uut

PyautoGUI

Moduł pyautogui w Pythonie to wieloplatformowa biblioteka automatyzacji GUI, która umożliwia programistom kontrolowanie myszy i klawiatury w celu automatyzacji zadań. Chociaż nie jest specjalnie zaprojektowany do skrobania stron internetowych, można go używać w połączeniu z innymi bibliotekami skrobania sieci, takimi jak Selenium, do interakcji ze stronami internetowymi, które wymagają wkładu użytkownika lub symulują działania człowieka.

pip3 install pyautogui>

Przykład

W tym przykładzie pyautogui służy do przewijania i robienia zrzutu ekranu strony wyników wyszukiwania uzyskanej poprzez wpisanie zapytania w polu wyszukiwania i kliknięcie przycisku wyszukiwania za pomocą Selenium.

Pyton
import pyautogui # moves to (519,1060) in 1 sec pyautogui.moveTo(519, 1060, duration = 1) # simulates a click at the present  # mouse position  pyautogui.click() # moves to (1717,352) in 1 sec pyautogui.moveTo(1717, 352, duration = 1) # simulates a click at the present  # mouse position pyautogui.click()>

Wyjście

Harmonogram

Moduł harmonogramu w Pythonie to prosta biblioteka, która pozwala zaplanować uruchamianie funkcji Pythona w określonych odstępach czasu. Jest to szczególnie przydatne podczas skrobania stron internetowych w Pythonie, gdy trzeba regularnie pobierać dane ze strony internetowej w określonych odstępach czasu, np. co godzinę, codziennie lub co tydzień.

Przykład

  • Importujemy niezbędne moduły: harmonogram, czas, żądania i BeautifulSoup z pakietu bs4.
  • Definiujemy funkcję scrape_data(), która wykonuje zadanie skrobania sieci. Wewnątrz tej funkcji wysyłamy żądanie GET do strony internetowej (zamień „https://example.com” na adres URL witryny, którą chcesz zeskrobać), analizujemy zawartość HTML za pomocą BeautifulSoup, wyodrębniamy żądane dane i drukujemy je .
  • Planujemy uruchamianie funkcji scrape_data() co godzinę, korzystając z harmonogramu.every().hour.do(scrape_data).
  • Wchodzimy do głównej pętli, która w sposób ciągły sprawdza oczekujące zaplanowane zadania za pomocą funkcjiharmonogram.run_pending() i zasypia na 1 sekundę pomiędzy iteracjami, aby zapobiec nadmiernemu zużyciu procesora przez pętlę.
Pyton
import schedule import time def func(): print('Geeksforgeeks') schedule.every(1).minutes.do(func) while True: schedule.run_pending() time.sleep(1)>

Wyjście

Dlaczego Python3 do skrobania sieci?

Popularność Pythona do skrobania stron internetowych wynika z kilku czynników:

  1. Łatwość użycia : Czysta i czytelna składnia języka Python ułatwia zrozumienie i pisanie kodu nawet początkującym. Ta prostota przyspiesza proces programowania i skraca czas uczenia się w przypadku zadań związanych z przeglądaniem stron internetowych.
  2. Bogaty ekosystem : Python może poszczycić się rozległym ekosystemem bibliotek i frameworków dostosowanych do przeglądania stron internetowych. Biblioteki takie jak BeautifulSoup, Scrapy i Requests upraszczają proces analizowania kodu HTML, dzięki czemu ekstrakcja danych jest dziecinnie prosta.
  3. Wszechstronność : Python to wszechstronny język, którego można używać do szerokiego zakresu zadań wykraczających poza przeglądanie stron internetowych. Jego elastyczność umożliwia programistom bezproblemową integrację web scrapingu z większymi projektami, takimi jak analiza danych, uczenie maszynowe lub tworzenie stron internetowych.
  4. Społeczność : Python ma dużą i aktywną społeczność programistów, którzy współtworzą jego biblioteki i zapewniają wsparcie za pośrednictwem forów, samouczków i dokumentacji. To bogactwo zasobów zapewnia programistom dostęp do pomocy i wskazówek przy pokonywaniu wyzwań związanych ze skrobaniem stron internetowych.