Када АПИ једноставно не може да га исече, увек можете да прибегнете стругању ХТМЛ-а, а Руст вам може помоћи.
Веб сцрапинг је популарна техника за брзо и ефикасно прикупљање великих количина података са веб страница. У недостатку АПИ-ја, веб стругање може бити следећи најбољи приступ.
Руст-ова брзина и безбедност меморије чине језик идеалним за прављење веб стругача. Руст је дом многих моћних библиотека за рашчлањивање и екстракцију података, а његове робусне могућности руковања грешкама су згодне за ефикасно и поуздано прикупљање веб података.
Веб Сцрапинг у Руст
Многе популарне библиотеке подржавају веб стругање у Русту, укључујући реквест, стругач, изаберите, и хтмл5евер. Већина Руст програмера комбинује функционалност реквест-а и сцрапер-а за своје веб сцрапинг.
Библиотека реквест пружа функционалност за прављење ХТТП захтева ка веб серверима. Реквест је изграђен на Руст-овом уграђеном хипер сандук док испоручује АПИ високог нивоа за стандардне ХТТП функције.
Сцрапер је моћна библиотека за стругање веба која анализира ХТМЛ и КСМЛ документе и
издваја податке помоћу ЦСС селектора и КСПатх изрази.Након креирања новог Руст пројекта са терет нов команду, додајте реквест и стругач сандуке у одељку зависности вашег царго.томл фајл:
[зависности]
реквест = {верзија = "0.11", карактеристике = ["блокирање"]}
стругач = "0.12.0"
Користићете реквест до шаљите ХТТП захтеве и стругач за рашчлањивање.
Преузимање веб страница помоћу Реквест-а
Послаћете захтев за садржај веб странице пре него што је анализирате да бисте преузели одређене податке.
Можете послати ГЕТ захтев и преузети ХТМЛ извор странице користећи текст функција на добити функција на реквест библиотека:
фнретриеве_хтмл() -> Низ {
дозволити одговор = гет(" https://news.ycombinator.com").унврап().тект().унврап();
повратак одговор;
}
Тхе добити функција шаље захтев веб страници, а текст функција враћа текст ХТМЛ-а.
Парсинг ХТМЛ витх Сцрапер
Тхе ретриеве_хтмл функција враћа текст ХТМЛ-а и мораћете да рашчланите ХТМЛ текст да бисте преузели специфичне податке који су вам потребни.
Сцрапер пружа функционалност за интеракцију са ХТМЛ-ом у Хтмл и Селектор модула. Тхе Хтмл модул пружа функционалност за рашчлањивање документа, и Селектор модул пружа функционалност за одабир специфичних елемената из ХТМЛ-а.
Ево како можете да преузмете све наслове на страници:
користити сцрапер::{Хтмл, Селецтор};
фнглавни() {
дозволити одговор = реквест:: блокирање:: гет(
" https://news.ycombinator.com/").унврап().тект().унврап();// рашчлањујемо ХТМЛ документ
дозволити доц_боди = Хтмл:: парсе_доцумент(&респонсе);
// бирамо елементе са класом насловне линије
дозволити титле = Селектор:: парсе(".титлелине").унврап();
за наслов ин доц_боди.селецт(&титле) {
дозволити наслови = наслов.текст().цоллецт::<Вец<_>>();
принтлн!("{}", наслови[0])
}
}
Тхе парсе_доцумент функција на Хтмл модул анализира ХТМЛ текст, а Парсе функција на Селектор модул бира елементе са наведеним ЦСС селектором (у овом случају, насловна линија класа).
Тхе за петља пролази кроз ове елементе и штампа први блок текста из сваког.
Ево резултата операције:
Одабир атрибута помоћу стругача
Да бисте изабрали вредност атрибута, преузмите потребне елементе као и раније и користите аттр метод инстанце вредности ознаке:
користити реквест:: блоцкинг:: гет;
користити сцрапер::{Хтмл, Селецтор};фнглавни() {
дозволити одговор = гет(" https://news.ycombinator.com").унврап().тект().унврап();
дозволити хтмл_доц = Хтмл:: парсе_доцумент(&респонсе);
дозволити цласс_селецтор = Селектор:: парсе(".титлелине").унврап();за елемент ин хтмл_доц.селецт(&цласс_селецтор) {
дозволити линк_селецтор = Селектор:: парсе("а").унврап();
за линк ин елемент.селецт(&линк_селецтор) {
акодозволитиНеки(хреф) = линк.валуе().аттр("хреф") {
принтлн!("{}", хреф);
}
}
}
}
Након одабира елемената са насловна линија разред користећи анализирати функција, тхе за петља их прелази. Унутар петље, код се затим преузима а означава и бира хреф атрибут са тхе аттр функција.
Тхе главни функција штампа ове везе, са резултатом као што је овај:
Можете да правите софистициране веб апликације у Русту
Недавно је Руст све више усвајан као језик за веб развој од фронт-енда до развоја апликација на страни сервера.
Можете да искористите веб склоп за прављење комплетних веб апликација са библиотекама као што су Иев и Перци или да направите на страни сервера апликације са Ацтик, Роцкет и мноштвом библиотека у Руст екосистему које пружају функционалност за прављење веба апликације.