πŸ” Как ΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ изобраТСния с сайта python: пошаговая инструкция для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Для парсинга ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с Π²Π΅Π±-сайта Π²Π°ΠΌ понадобится ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Python ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ BeautifulSoup.

from bs4 import BeautifulSoup
import urllib.request

url = "адрСс_сайта"
page = urllib.request.urlopen(url)
soup = BeautifulSoup(page, 'html.parser')

images = soup.find_all('img')

for image in images:
    print(image['src'])

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ изобраТСния с сайта Π² Python

ΠŸΠ°Ρ€ΡΠΈΠ½Π³ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с Π²Π΅Π±-сайтов - это ваТная Π·Π°Π΄Π°Ρ‡Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим нСсколько способов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ изобраТСния с сайта.


1. ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ requests

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° requests позволяСт Π²Π°ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ HTTP-запросы ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ ΠΎΡ‚ сСрвСра. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с Π²Π΅Π±-сайта. Π’ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


        import requests

        url = 'https://example.com/image.jpg'
        response = requests.get(url)

        with open('image.jpg', 'wb') as file:
            file.write(response.content)
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ requests.get() для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ GET-запроса ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ URL-адрСсу. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ сохраняСм ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ содСрТимоС Π² Ρ„Π°ΠΉΠ» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ open(). Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΠΎΠ»Π½Ρ‹ΠΉ URL-адрСс изобраТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ, ΠΈ имя Ρ„Π°ΠΉΠ»Π°, ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.


2. ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ BeautifulSoup

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° BeautifulSoup позволяСт Π»Π΅Π³ΠΊΠΎ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· HTML ΠΈ XML Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для поиска ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с Π²Π΅Π±-страницы. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:


        import requests
        from bs4 import BeautifulSoup

        url = 'https://example.com'
        response = requests.get(url)
        soup = BeautifulSoup(response.content, 'html.parser')

        # Найти всС Ρ‚Π΅Π³ΠΈ  Π½Π° страницС
        images = soup.find_all('img')

        # Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅
        for image in images:
            image_url = image['src']

            if 'http' not in image_url:
                # Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ прСфикс, Ссли ссылка ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ
                image_url = url + '/' + image_url

            response = requests.get(image_url)

            with open('image.jpg', 'wb') as file:
                file.write(response.content)
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ сначала ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ HTML-ΠΊΠΎΠ΄ Π²Π΅Π±-страницы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ requests.get(). Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создаСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Beautiful Soup, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ HTML ΠΊΠΎΠ΄. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ find_all() для поиска всСх Ρ‚Π΅Π³ΠΎΠ² Π½Π° страницС, ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ requests.get().


3. ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Scrapy

Scrapy - это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для извлСчСния Π΄Π°Π½Π½Ρ‹Ρ… с Π²Π΅Π±-сайтов. Он ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ мноТСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для автоматичСского парсинга ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ минимального ΠΊΠΎΠ΄Π°:


        import scrapy

        class ImageSpider(scrapy.Spider):
            name = 'image_spider'
            start_urls = ['https://example.com']

            def parse(self, response):
                # Найти всС Ρ‚Π΅Π³ΠΈ  Π½Π° страницС
                images = response.css('img')

                # Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅
                for image in images:
                    image_url = image.xpath('@src').get()

                    if 'http' not in image_url:
                        # Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ прСфикс, Ссли ссылка ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ
                        image_url = response.urljoin(image_url)

                    yield scrapy.Request(image_url, self.save_image)

            def save_image(self, response):
                with open('image.jpg', 'wb') as file:
                    file.write(response.body)
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм класс ImageSpider, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся наслСдником класса scrapy.Spider. ΠœΡ‹ Π·Π°Π΄Π°Π΅ΠΌ URL-адрСс Π²Π΅Π±-страницы, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ парсинг, ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ parse() для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π°. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ сСлСкторы CSS ΠΈ XPath для поиска Ρ‚Π΅Π³ΠΎΠ² Π½Π° страницС, ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ scrapy.Request(). Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ save_image() ΠΌΡ‹ сохраняСм ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ„Π°ΠΉΠ».


Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способа парсинга ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с Π²Π΅Π±-сайта Π² Python. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»ΡƒΡ‡ΡˆΠ΅ всСго соотвСтствуСт вашим потрСбностям ΠΈ трСбованиям ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ requests, BeautifulSoup ΠΈΠ»ΠΈ Scrapy, Π² зависимости ΠΎΡ‚ Π²Π°ΡˆΠΈΡ… ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠΉ ΠΈ уровня слоТности Π·Π°Π΄Π°Ρ‡ΠΈ.

НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° использования Π²Π΅Π±-сайтов ΠΈ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ авторскиС ΠΏΡ€Π°Π²Π° Π½Π° изобраТСния. ΠŸΠ°Ρ€ΡΠΈΡ‚Π΅ изобраТСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с согласия Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅Π² ΠΈ для Π·Π°ΠΊΠΎΠ½Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

ΠŸΠ°Ρ€ΡΠ΅Ρ€ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с сайта Π½Π° Python

ΠŸΠ°Ρ€ΡΠΈΠ½Π³ сайтов PYTHON - #4 Π‘ΠšΠΠ§Π˜Π’ΠΠΠ˜Π― Π€ΠΠ™Π›ΠžΠ’, ΠŸΠΠ Π‘Π˜ΠΠ“ ДАННЫΠ₯

ΠŸΠ°Ρ€ΡΠΈΠ½Π³ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ ΠΈΠ· поисковой Π²Ρ‹Π΄Π°Ρ‡ΠΈ Π½Π° python (ΠΏΠΈΡ‚ΠΎΠ½)

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ” Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎ Data Science с Python?

🎨 Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π² Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‡Π΅Ρ€Π΅ΠΏΠ°ΡˆΠΊΠΈ 🐒

πŸ”’ Как Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ количСство слов Π² Ρ„Π°ΠΉΠ»Π΅ python? πŸ’‘

πŸ” Как ΠΏΠ°Ρ€ΡΠΈΡ‚ΡŒ изобраТСния с сайта python: пошаговая инструкция для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Как пСрСвСсти часы Π² сСкунды с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python? πŸ˜„β°

🎲 Как вывСсти Ρ€Π°Π½Π΄ΠΎΠΌ чисСл Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅: Π»Π΅Π³ΠΊΠΈΠΉ способ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

πŸ”§ Как Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π² Python Π½Π° Linux