Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор. Прочетете още.

Искате да научите уеб скрапинг с Python, но се чудите дали да използвате Beautiful Soup, Selenium или Scrapy за следващия си проект? Въпреки че всички тези библиотеки и рамки на Python са мощни сами по себе си, те не се грижат за всички нужди за уеб скрапинг и следователно е важно да знаете кой инструмент трябва да използвате за конкретен работа.

Нека да разгледаме разликите между Beautiful Soup, Scrapy и Selenium, за да можете да вземете мъдро решение, преди да започнете следващия си проект за уеб скрапиране на Python.

1. Лесна употреба

Ако сте начинаещ, първото ви изискване е библиотека, която е лесна за научаване и използване. Beautiful Soup ви предлага всички елементарни инструменти, от които се нуждаете, за да изстържете мрежата, и това е особено полезно за хора, които имат минимален опит с Python, но искат да започнат работа с мрежата остъргване.

instagram viewer

Единственото предупреждение е, че поради своята простота, Beautiful Soup не е толкова мощен в сравнение със Scrapy или Selenium. Програмистите с опит в разработката могат лесно да овладеят както Scrapy, така и Selenium, но за начинаещи, изграждането на първия проект може да отнеме много време, ако изберат да използват тези рамки вместо Beautiful Супа.

За да изтриете съдържанието на етикета за заглавие на example.com с помощта на Beautiful Soup, трябва да използвате следния код:

url = "https://example.com/"
res = requests.get (url).текст
супа = Красива супа (res, 'html.parser')
заглавие = soup.find("заглавие").текст
печат(заглавие)

За да постигнете подобни резултати с помощта на Selenium, трябва да напишете:

url = "https://example.com"
драйвер = уебдрайвер. Chrome("път/към/chromedriver")
шофьор.get(URL адрес)
title = driver.find_element (от. TAG_NAME, "заглавие").get_attribute('текст')
печат(заглавие)

Файловата структура на проекта на Scrapy се състои от множество файлове, което допринася за неговата сложност. Следният код изтрива заглавието от example.com:

импортиране стържещ

класTitleSpider(остъргващ. паяк):
име = 'заглавие'
начални_urls = ['https://example.com']

дефанализирам(аз, отговор):
добив {
'име': response.css('заглавие'),
}

Ако искате да извлечете данни от услуга, която предлага официален API, може да е мъдро решение да го направите използвайте API вместо да разработвате уеб скрепер.

2. Скорост на изстъргване и паралелизиране

От трите, Scrapy е категоричният победител, когато става въпрос за скорост. Това е така, защото поддържа паралелизиране по подразбиране. Използвайки Scrapy, можете да изпращате множество HTTP заявки наведнъж и когато скриптът изтегли HTML кода за първия набор от заявки, той е готов да изпрати друга партида.

С Beautiful Soup можете да използвате библиотеката с нишки, за да изпращате едновременни HTTP заявки, но не е удобно и ще трябва да научите многопоточност, за да го направите. На Selenium е невъзможно да се постигне паралелизиране без стартиране на множество копия на браузъра.

Ако трябва да класирате тези три инструмента за уеб скрапиране по отношение на скоростта, Scrapy е най-бързият, следван от Beautiful Soup и Selenium.

3. Използване на паметта

Selenium е API за автоматизация на браузъра, който намери своите приложения в полето за изстъргване на мрежата. Когато използвате Selenium за скрейпване на уебсайт, той създава екземпляр на браузър без глава, който работи във фонов режим. Това прави Selenium ресурсоемък инструмент в сравнение с Beautiful Soup и Scrapy.

Тъй като последните работят изцяло в командния ред, те използват по-малко системни ресурси и предлагат по-добра производителност от Selenium.

4. Изисквания за зависимост

Beautiful Soup е колекция от инструменти за анализ, които ви помагат да извличате данни от HTML и XML файлове. Доставя се с нищо друго. Трябва да използвате библиотеки като заявки или urllib за правене на HTTP заявки, вградени парсери за анализиране на HTML/XML и допълнителни библиотеки за внедряване на прокси сървъри или поддръжка на бази данни.

Scrapy, от друга страна, идва с целия пакет. Получавате инструменти за изпращане на заявки, анализиране на изтегления код, извършване на операции с извлечените данни и съхраняване на изчерпаната информация. Можете да добавите други функции към Scrapy, като използвате разширения и междинен софтуер, но това ще дойде по-късно.

Със Selenium изтегляте уеб драйвер за браузъра, който искате да автоматизирате. За да приложите други функции като съхранение на данни и поддръжка на прокси, ще ви трябват модули на трети страни.

5. Качество на документацията

Като цяло всяка документация на проекта е добре структурирана и описва всеки метод с примери. Но ефективността на проектната документация зависи до голяма степен и от читателя.

Документацията на Beautiful Soup е много по-добра за начинаещи, които започват с уеб скрапинг. Без съмнение Selenium и Scrapy имат подробна документация, но техническият жаргон може да хване неподготвени много новодошли.

Ако имате опит с програмни концепции и терминология, тогава която и да е от трите документации ще бъде лесна за прочитане.

6. Поддръжка за разширения и междинен софтуер

Scrapy е най-разширяемата рамка на Python за уеб скрапиране, точка. Той поддържа междинен софтуер, разширения, прокси сървъри и други и ви помага да разработите робот за мащабни проекти.

Можете да пишете надеждни и ефективни роботи чрез внедряване на мидълуер в Scrapy, които са основно кукички, които добавят персонализирана функционалност към механизма по подразбиране на рамката. Например, HttpErrorMiddleware се грижи за HTTP грешките, така че паяците не трябва да се справят с тях, докато обработват заявки.

Мидълуерът и разширенията са изключителни за Scrapy, но можете да постигнете подобни резултати с Beautiful Soup и Selenium, като използвате допълнителни библиотеки на Python.

7. Изобразяване на JavaScript

Selenium има един случай на употреба, при който превъзхожда други библиотеки за уеб скрапиране, и това е, че скрейпване на уебсайтове с активиран JavaScript. Въпреки че можете да скрейпвате JavaScript елементи с помощта на междинен софтуер на Scrapy, работният процес на Selenium е най-лесният и удобен от всички.

Използвате браузър, за да заредите уебсайт, да взаимодействате с него чрез кликвания и натискания на бутони и кога имате съдържанието, което трябва да изстържете на екрана, извлечете го с помощта на CSS и XPath на Selenium селектори.

Beautiful Soup може да избира HTML елементи с помощта на XPath или CSS селектори. Той обаче не предлага функционалност за изтриване на изобразени от JavaScript елементи на уеб страница.

Уеб скрапирането става лесно с Python

Интернет е пълен със сурови данни. Уеб скрапирането помага за преобразуването на тези данни в смислена информация, която може да се използва добре. Селенът вероятно е най-сигурният ви залог, ако искате да скрейпнете уебсайт с JavaScript или трябва да задействате някои елементи на екрана, преди да извлечете данните.

Scrapy е пълноценна рамка за уеб скрапиране за всички ваши нужди, независимо дали искате да напишете малък краул или мащабен скрепер, който многократно обхожда интернет за актуализирани данни.

Можете да използвате Beautiful Soup, ако сте начинаещ или трябва бързо да развиете скрепер. Каквато и рамка или библиотека да използвате, лесно е да започнете да изучавате уеб скрапинг с Python.