Веб сцрапинг је један од најбољих метода прикупљања података за прикупљање података и изградњу прилагођених скупова података на врху.
Поседовање скупова података високог квалитета је од суштинског значаја у овој ери одлучивања заснованог на подацима. Иако постоје бројни јавно доступни скупови података, понекад ћете можда морати да направите прилагођене скупове података који задовољавају ваше специфичне потребе. Веб стругање вам омогућава да извучете податке са веб локација. Затим можете користити ове податке за креирање прилагођеног скупа података.
Преглед метода прикупљања података
Постоје различите методе прикупљања података. Они укључују ручни унос података, АПИ-је, јавне скупове података и веб скрапинг. Свака метода има своје предности и ограничења.
Ручни унос података је дуготрајан и подложан је људским грешкама, посебно за прикупљање података великих размера. Међутим, то је корисно за прикупљање података малог обима и када подаци нису доступни другим средствима.
АПИ-ји омогућавају програмерима да приступају и преузимају податке на структурисан начин. Често пружају информације у реалном времену или се редовно ажурирају. Међутим, приступ АПИ-ју може бити ограничен, захтевати аутентификацију или имати ограничења коришћења.
Јавни скупови података покривају широк спектар тема и домена. Они су претходно прикупљени и често долазе у структурираном формату, што их чини лако доступним. Они могу уштедети време и труд када су потребни подаци усклађени са доступним скуповима података. Међутим, они можда неће увек покривати ваше специфичне потребе или бити ажурни.
Веб сцрапинг пружа начин за прикупљање података са веб локација које не нуде АПИ-је или имају ограничен приступ. Омогућава прилагођавање, скалабилност и могућност прикупљања података из више извора. Међутим, то захтева вештине програмирања, познавање ХТМЛ структуре и поштовање законских и етичких смерница.
Одабир Веб Сцрапинг-а за прикупљање података
Веб сцрапинг вам омогућава да извучете информације директно са веб страница, дајући вам приступ широком спектру извора података. Такође вам даје контролу над подацима које треба издвојити и како их структурирати. Ово олакшава прилагођавање процеса стругања према вашим специфичним захтевима и издвајање прецизних информација које су вам потребне за ваш пројекат.
Идентификовање извора података
Први корак у веб скрапингу је идентификација извора података. Ово је веб локација која садржи податке које желите да обришете. Када бирате извор података, уверите се да сте усклађени са условима коришћења извора. Овај чланак ће користити ИМДб (Интернет Мовие Датабасе) као извор података.
Подешавање вашег окружења
Подесите виртуелно окружење. Затим покрените следећу команду да бисте инсталирали потребне библиотеке.
пип инсталл рекуестс беаутифулсоуп4 пандас
Користићете захтева библиотека за прављење ХТТП захтева. беаутифулсоуп4 за рашчлањивање ХТМЛ садржаја и издвајање података са веб страница. Коначно ћете користити панде да манипулише и анализира податке.
Комплетан изворни код је доступан у а ГитХуб спремиште.
Писање скрипте за писање веба
Увезите инсталиране библиотеке у своју скрипту да бисте могли да користите функције које пружају.
увоз захтева
из бс4 увоз БеаутифулСоуп
увоз време
увоз панде као пд
увоз ре
Тхе време и ре модули су део Питхон стандардне библиотеке. Дакле, не захтевају посебне инсталације.
време ће додати кашњења у процес стругања док ре бавиће се регуларни изрази.
Хоћеш користите Прелепу супу да скрећете циљну веб локацију.
Направите функцију која ће послати ХТТП ГЕТ захтев на ваш циљни УРЛ. Затим би требало да преузме садржај одговора и креира а БеаутифулСоуп објекат из ХТМЛ садржаја.
дефгет_соуп(урл, парамс=Ништа, заглавља=Ништа):
одговор = рекуестс.гет (урл, парамс=парамс, хеадерс=хеадерс)
супа = БеаутифулСоуп (респонсе.цонтент, "хтмл.парсер")
повратак супа
Следећи корак је извлачење информација из БеаутифулСоуп објекат.
Да бисте издвојили информације, потребно је да разумете структуру циљане веб странице. Ово укључује проверу ХТМЛ кода веб локације. Ово ће вам помоћи да идентификујете елементе и атрибуте који садрже податке које желите да издвојите. Да бисте прегледали своју циљну веб локацију, отворите њену везу у веб прегледачу и идите до веб странице која садржи податке које желите да скрежете.
Затим кликните десним тастером миша на веб страницу и изаберите Инспецт из контекстног менија. Ово ће отворити алатке за програмере претраживача.
У ХТМЛ коду веб странице потражите елементе који садрже податке које желите да извучете. Обратите пажњу на ХТМЛ ознаке, класе и атрибуте повезане са подацима који су вам потребни. Користићете их за креирање селектора за издвајање података помоћу БеаутифулСоуп-а. На слици изнад можете видети да је наслов филма унутар листер-итем-хеадер класа. Прегледајте сваку функцију коју желите да издвојите.
Креирајте функцију која ће извући информације из БеаутифулСоуп објекат. У овом случају, функција проналази наслов, оцену, опис, жанр, датум објављивања, режисере и звезде филма користећи одговарајуће ХТМЛ ознаке и атрибуте класе.
дефектрацт_мовие_дата(филм):
титле = мовие.финд("х3", цласс_="листер-итем-хеадер").нађи("а").текст
ратинг = мовие.финд("див", цласс_="рејтинг-имдб-рејтинг").јак.текст
опис = мовие.финд("див", цласс_="садржај-ставке листе").финд_алл("п")[1].тект.стрип()
генре_елемент = мовие.финд("спан", цласс_="жанр")
жанр = генре_елемент.тект.стрип() ако жанр_елемент другоНиједан
датум_изласка = мовие.финд("спан", цласс_=„текст листе-ставке-година текста-пригушено неподебљано“).тект.стрип()
режисер_звезде = мовие.финд("п", цласс_=„текст је искључен“).финд_алл("а")
директори = [особа.текст за особа ин режисер_звезде[:-1]]
звездице = [особа.текст за особа ин режисер_звезде[-1:]]
филм_подаци = {
"наслов": наслов,
"Ратинг": рејтинг,
"Опис": Опис,
"жанр": жанр,
"Датум изласка": Датум изласка,
"редитељи": директори,
"Звездице": Звездице
}
повратак мовие_дата
Коначно, креирајте функцију која ће извршити стварно стругање користећи горње две функције. Биће потребна година и максималан број филмова које желите да скидате.
дефсцрапе_имдб_мовиес(година, граница):
басе_урл = " https://www.imdb.com/search/title"
заглавља = {"Прихвати-језик": „ен-САД, ен; к=0,9"}
филмови = []
старт = 1
док лен (филмови) < лимит:
парамс = {
"Датум изласка": година,
"врста": "нум_вотес, десц",
"почетак": почетак
}
супа = гет_соуп (басе_урл, парамс=парамс, хеадерс=хеадерс)
мовие_лист = соуп.финд_алл("див", цласс_=„напредни начин рада листе ставке“)
ако лен (лист_филмова) == 0:
пауза
за филм ин мовие_лист:
мовие_дата = ектрацт_мовие_дата (филм)
мовиес.аппенд (мовие_дата)
ако лен (филмови) >= ограничење:
пауза
старт += 50# ИМДб приказује 50 филмова по страници
тиме.слееп(1) # Додајте одлагање да бисте избегли преоптерећење сервера
повратак филмовима
Затим позовите деф сцрапе_имдб_мовиес да изврши стругање.
# Сцрапе 1000 филмова објављених 2023. (или онолико колико је доступно)
филмови = сцрапе_имдб_мовиес(2023, 1000)
Сада сте извукли податке.
Следећи корак је креирање скупа података од ових података.
Креирање скупа података из скрапаних података
Креирајте ДатаФраме користећи Пандас из струганих података.
дф = пд. ДатаФраме (филмови)
Затим извршите претходну обраду и чишћење података. У овом случају, уклоните редове са недостајућим вредностима. Затим издвојите годину из датума објављивања и претворите је у нумеричку. Уклоните непотребне колоне. Цонверт тхе Оцена колону у бројчану. На крају, уклоните знакове који нису абецедни из Наслов колона.
дф = дф.дропна()
дф['Година изласка'] = дф['Датум изласка'].стр.ектрацт(р'(\д{4})')
дф['Година изласка'] = пд.то_нумериц (дф['Година изласка'],
грешке='принуда').астипе('Инт64')
дф = дф.дроп(['Датум изласка'], ос =1)
дф['Ратинг'] = пд.то_нумериц (дф['Ратинг'], грешке='принуда')
дф['Титле'] = дф['Титле'].применити(ламбда к: ре.суб(р'\В+', ' ', Икс))
Сачувајте податке у датотеци да бисте их касније користили у свом пројекту.
дф.то_цсв("имдб_мовиес_датасет.цсв", индек=Фалсе)
На крају, одштампајте првих пет редова вашег скупа података да бисте видели како изгледа.
дф.хеад()
Излаз је као што је приказано на слици испод:
Сада имате скуп података добијен путем веб-стругања.
Веб Сцрапинг коришћењем других Питхон библиотека
Беаутифул Соуп није једина Питхон библиотека коју можете користити за веб скрапинг. Постоје и друге библиотеке. Сваки са својим предностима и ограничењима. Истражите их да бисте сазнали који од њих најбоље одговара вашем случају употребе.