Када АПИ једноставно не може да га исече, увек можете да прибегнете стругању ХТМЛ-а, а Руст вам може помоћи.

Веб сцрапинг је популарна техника за брзо и ефикасно прикупљање великих количина података са веб страница. У недостатку АПИ-ја, веб стругање може бити следећи најбољи приступ.

Руст-ова брзина и безбедност меморије чине језик идеалним за прављење веб стругача. Руст је дом многих моћних библиотека за рашчлањивање и екстракцију података, а његове робусне могућности руковања грешкама су згодне за ефикасно и поуздано прикупљање веб података.

Веб Сцрапинг у Руст

Многе популарне библиотеке подржавају веб стругање у Русту, укључујући реквест, стругач, изаберите, и хтмл5евер. Већина Руст програмера комбинује функционалност реквест-а и сцрапер-а за своје веб сцрапинг.

Библиотека реквест пружа функционалност за прављење ХТТП захтева ка веб серверима. Реквест је изграђен на Руст-овом уграђеном хипер сандук док испоручује АПИ високог нивоа за стандардне ХТТП функције.

Сцрапер је моћна библиотека за стругање веба која анализира ХТМЛ и КСМЛ документе и

издваја податке помоћу ЦСС селектора и КСПатх изрази.

Након креирања новог Руст пројекта са терет нов команду, додајте реквест и стругач сандуке у одељку зависности вашег царго.томл фајл:

[зависности]
реквест = {верзија = "0.11", карактеристике = ["блокирање"]}
стругач = "0.12.0"

Користићете реквест до шаљите ХТТП захтеве и стругач за рашчлањивање.

Преузимање веб страница помоћу Реквест-а

Послаћете захтев за садржај веб странице пре него што је анализирате да бисте преузели одређене податке.

Можете послати ГЕТ захтев и преузети ХТМЛ извор странице користећи текст функција на добити функција на реквест библиотека:

фнретриеве_хтмл() -> Низ {
дозволити одговор = гет(" https://news.ycombinator.com").унврап().тект().унврап();
повратак одговор;
}

Тхе добити функција шаље захтев веб страници, а текст функција враћа текст ХТМЛ-а.

Парсинг ХТМЛ витх Сцрапер

Тхе ретриеве_хтмл функција враћа текст ХТМЛ-а и мораћете да рашчланите ХТМЛ текст да бисте преузели специфичне податке који су вам потребни.

Сцрапер пружа функционалност за интеракцију са ХТМЛ-ом у Хтмл и Селектор модула. Тхе Хтмл модул пружа функционалност за рашчлањивање документа, и Селектор модул пружа функционалност за одабир специфичних елемената из ХТМЛ-а.

Ево како можете да преузмете све наслове на страници:

користити сцрапер::{Хтмл, Селецтор};

фнглавни() {
дозволити одговор = реквест:: блокирање:: гет(
" https://news.ycombinator.com/").унврап().тект().унврап();

// рашчлањујемо ХТМЛ документ
дозволити доц_боди = Хтмл:: парсе_доцумент(&респонсе);

// бирамо елементе са класом насловне линије
дозволити титле = Селектор:: парсе(".титлелине").унврап();

за наслов ин доц_боди.селецт(&титле) {
дозволити наслови = наслов.текст().цоллецт::<Вец<_>>();
принтлн!("{}", наслови[0])
}
}

Тхе парсе_доцумент функција на Хтмл модул анализира ХТМЛ текст, а Парсе функција на Селектор модул бира елементе са наведеним ЦСС селектором (у овом случају, насловна линија класа).

Тхе за петља пролази кроз ове елементе и штампа први блок текста из сваког.

Ево резултата операције:

Одабир атрибута помоћу стругача

Да бисте изабрали вредност атрибута, преузмите потребне елементе као и раније и користите аттр метод инстанце вредности ознаке:

користити реквест:: блоцкинг:: гет;
користити сцрапер::{Хтмл, Селецтор};

фнглавни() {
дозволити одговор = гет(" https://news.ycombinator.com").унврап().тект().унврап();
дозволити хтмл_доц = Хтмл:: парсе_доцумент(&респонсе);
дозволити цласс_селецтор = Селектор:: парсе(".титлелине").унврап();

за елемент ин хтмл_доц.селецт(&цласс_селецтор) {
дозволити линк_селецтор = Селектор:: парсе("а").унврап();

за линк ин елемент.селецт(&линк_селецтор) {
акодозволитиНеки(хреф) = линк.валуе().аттр("хреф") {
принтлн!("{}", хреф);
}
}
}
}

Након одабира елемената са насловна линија разред користећи анализирати функција, тхе за петља их прелази. Унутар петље, код се затим преузима а означава и бира хреф атрибут са тхе аттр функција.

Тхе главни функција штампа ове везе, са резултатом као што је овај:

Можете да правите софистициране веб апликације у Русту

Недавно је Руст све више усвајан као језик за веб развој од фронт-енда до развоја апликација на страни сервера.

Можете да искористите веб склоп за прављење комплетних веб апликација са библиотекама као што су Иев и Перци или да направите на страни сервера апликације са Ацтик, Роцкет и мноштвом библиотека у Руст екосистему које пружају функционалност за прављење веба апликације.