Kazalo:

Strganje podatkov z ESP8266/ESP32: 7 korakov
Strganje podatkov z ESP8266/ESP32: 7 korakov

Video: Strganje podatkov z ESP8266/ESP32: 7 korakov

Video: Strganje podatkov z ESP8266/ESP32: 7 korakov
Video: Изучите Arduino за 30 минут: примеры и проекты 2024, Julij
Anonim
Strganje podatkov z ESP8266/ESP32
Strganje podatkov z ESP8266/ESP32
Strganje podatkov z ESP8266/ESP32
Strganje podatkov z ESP8266/ESP32

Ste že kdaj želeli pridobiti podatke za svoje projekte Arduino, vendar za to ni javnega API -ja? Ali v primerih, kot je Instagram API, kjer postopek namestitve ni zelo priročen?

V tem navodilu si bomo ogledali dve različni možnosti za brisanje podatkov s spletnega mesta za vaše projekte ESP8266 ali ESP32.

Korak: Oglejte si video

Image
Image

Naredil sem videoposnetek, ki pokriva isto stvar kot ta navodila, zato, če vas zanima, si oglejte!

2. korak: Preden začnemo

Preden začnemo
Preden začnemo
Preden začnemo
Preden začnemo

Naj povem le, da so podatki, o katerih bom govoril, brisanje javnih podatkov in ne zahtevajo nobenega preverjanja pristnosti. Recimo, na primer, moje natančno število naročnikov na YouTube mi je na voljo samo v studiu za ustvarjalce, zato bi morala naprava vložiti zahtevo, ki je potrdila kot jaz, da jo naložim. Te vrste zahtev za ta videoposnetek ne bodo dosežene. Hiter test, da preverite, ali je zajet, je poskusiti naložiti stran v okno brez beleženja zgodovine, saj se s tem ne boste samodejno prijavili na nobeno spletno mesto.

Za tehnike, opisane v tem navodilu, bomo morali uporabiti nekatera orodja za razvijalce, ki so na voljo v brskalnikih. Predstavil jih bom s Firefoxom, vendar zagotovo vem, da ima Chrome podobna orodja in prepričan sem, da jih imajo tudi drugi brskalniki.

3. korak: Nejavni API -ji (Spoiler: Instructables Has One!)

Prvi način, na katerega bomo pogledali, je uporaba nejavnega API-ja. To ne bo vedno na voljo, če pa je to zagotovo metoda, ki bi jo morali uporabiti. To, kar imenujem "nejavni API", je v bistvu tisto, kjer spletno mesto v ozadju uporablja nereverziran API na svojem spletnem mestu za pridobivanje podatkov, ki jih želimo pridobiti.

Obstaja nekaj razlogov, zakaj bi bila to najprimernejša možnost uporabe.

  1. Največja prednost je, da se verjetno ne bo spreminjalo tako pogosto kot spletna stran, če podatke pobrskate neposredno iz HTML -ja spletne strani, se lahko vsakič, ko spremenijo spletno mesto, razčleni.
  2. Običajno je podatkovno učinkovitejši. Ko strgate spletno stran, v bistvu nalagate celotno stran HTML, da iz nje izvlečete koščke podatkov, bodo API -ji vrnili samo podatkovne točke, zato so običajno veliko manjše zahteve.
  3. Običajno je lažje razčleniti. Običajno API -ji vrnejo podatke v obliki JSON, ki jo je enostavno razčleniti, kar še posebej velja, če ekstrahirate več podatkov.

Najprej moramo ugotoviti, ali spletna stran uporablja takšno nastavitev. Največji namig je, če spletno mesto v realnem času posodobi vrednost, kot to počne na Kickstarterju, vendar tudi v nasprotnem primeru še vedno obstaja upanje, da bo morda uporabil to nastavitev. Instructables uporablja nejavni API za pridobivanje nekaterih podatkov za svoje spletno mesto, čeprav se ne osveži v realnem času.

Če želite preveriti, ali spletno mesto uporablja to nastavitev, vstopite v način za razvijalce svojega brskalnika. Najlažji način za to je, da z desno miškino tipko kliknete stran in izberete »pregledaj element«.

Nato boste morali iti na zavihek omrežje, v katerem bodo prikazane zahteve, ki jih spletna stran pošilja v ozadju. Upoštevajte, da boste morda morali stran znova odpreti, ko odprete ta zavihek, ker bodo od zdaj prikazane samo zahteve.

Običajno želite poiskati tiste z vrsto "json". Tu je lahko veliko zahtev, zato bo morda pomagalo razvrstiti po vrsti. Vidite, da je na strani oglaševalske akcije kickstarter zelo očitno, da uporablja to nastavitev, saj lahko vidite stalne zahteve do končne točke »stats.json«. Na strani avtorjev Instructables (npr. Moja je "https://www.instructables.com/member/witnessmenow/") ne pošiljajo stalnih zahtev, lahko pa med drugimi vidite skrito zahtevo za končno točko "showAuthorStats".

Če želite izvedeti več o tej zahtevi, jo kliknite. Od tu bi morali dobiti vse potrebne informacije za ponovitev zahteve. Toda preden to storite, morate najprej dvakrat preveriti, ali ima podatke, ki jih želite. Kliknite na zavihek odziv in preverite, ali so podatki tam.

Če vsebuje vse potrebne podatke, ste pripravljeni! Nato lahko uporabite iste pristope, ki so bili opisani v mojem prejšnjem videoposnetku o povezovanju z API -ji. Kratka različica tega je, da poskrbite, da bo zahteva delovala po pričakovanjih na orodju, kot je Poštar, nato pa s tem vzorčnim projektom preizkusite, ali deluje v vaši napravi.

Za razčlenjevanje podatkov JSON priporočam uporabo ArudinoJSON v večini scenarijev, če bi to radi poučili, mi samo sporočite!

4. korak: Neposredno strganje podatkov

Neposredno brisanje podatkov
Neposredno brisanje podatkov
Neposredno brisanje podatkov
Neposredno brisanje podatkov
Neposredno brisanje podatkov
Neposredno brisanje podatkov

Nato bomo pogledali brisanje podatkov neposredno s spletne strani, to je zahtevanje celotne spletne strani v napravi in razčlenitev podatkov, ki jih želimo odstraniti. Omenil sem že prednosti nejavnega API-ja pred to metodo, včasih pa morajo!

Tukaj je pomembno omeniti eno stvar, če ste seznanjeni s spletnim razvojem, ste morda vajeni uporabljati funkcijo pregleda elementov, če želite izvedeti informacije o določenem elementu in o njegovi strukturi. Pri tem pristopu se je treba temu izogniti, ker se sodobne spletne strani običajno dinamično spreminjajo z uporabo Javascripta, kar se v vaši napravi ne bo zgodilo. Koda HTML, ki je na voljo v vaši napravi, bo samo prvotna spletna stran, ki se prenese. Dober primer tega je stran TeamTrees, trenutno število donacij se začne kot 0 in se kasneje s to animacijo naloži na stran, vendar za razliko od dveh primerov, ki smo jih videli prej, ne naloži podatkov v ozadju, zato pravilni podatki morajo biti nekje drugje.

Če si želite ogledati izvirno kodo spletne strani, z desno miškino tipko kliknite stran in izberite »Prikaži vir«. Nato želite poiskati določene podatke, ki jih želite, zato lahko v primeru TeamTrees, ko iščemo trenutno število donacij, vidimo, da je dejansko število shranjeno v lastnosti preštevanja podatkov elementa count, tukaj moramo izbrisati podatke iz.

Morate najti iskalni niz, ki vas pripelje do vaših podatkov. To je veliko lažje ugotoviti, preden kodirate napravo. V tem primeru me iskanje »štetje podatkov« pripelje do želenih podatkov, kar je popolno. Ni nam treba skrbeti, da se ujema tudi na drugih mestih na strani, ker bo najprej prišel na prvo mesto. Če ste morali zadeti tretjega, ga lahko preprosto programirate tako, da prezrete prva dva, ki ste jih zadeli.

Če pogledamo primer TeamTrees, smo tako kot prej preskočili glave odzivov in zdaj gledamo telo odziva (to je spletna stran). Od odjemalca se vrne tok podatkov. Za našo iskalno poizvedbo nas ne zanima nič, zato naredimo odjemalca. Če bo iskalno poizvedbo našel, bo vrnil true in tok bo premaknil na konec poizvedbe. Naslednja stvar, ki je na voljo v toku, bodo podatki, ki jih iščemo, vendar v tem primeru nismo prepričani, kako dolgi bodo podatki, vendar vemo, da so to vse informacije med našim trenutnim mestom v toku in naslednjo obrnjeno vejico. To lahko dosežemo z uporabo »client.readBytesUntil«, ki naredi, kar pravi, bere bajte v medpomnilnik, dokler ne zadene podane poizvedbe. Prepričajte se, da je vmesnik, v katerega berete, dovolj velik, da vsebuje vse podatke, mislim, da smo tukaj z 32 precej varni!

Če imate vse potrebne podatke, vam ni treba več brati podatkov. Tu povezave nisem prekinil, ker se mi zdi, da ne povzroča težav na ESP8266, vendar je zdelo, da povzroča težave z ESP32, zato sem dodal client.stop (). Če sem popolnoma iskren, nisem prepričan, zakaj sem ga postavil na vrh metode, mislim, da bi bilo bolj smiselno, da ga zaprete, ko boste imeli želene podatke.

5. korak: Strganje podatkov z zunanjim strežnikom:

Strganje podatkov z zunanjim strežnikom
Strganje podatkov z zunanjim strežnikom
Strganje podatkov z zunanjim strežnikom
Strganje podatkov z zunanjim strežnikom

Še ena tema, ki se je treba dotakniti, obstaja veliko boljših orodij za razčlenjevanje v običajnih računalniških okoljih, kot je NodeJS, kot na mikro krmilniku, zato je včasih smiselno narediti storitev, ki pridobiva podatke s spletne strani in omogoča enostavnejše končna točka za vaš ESP8266 ali ESP32. En primer tega je bilo strganje strani CrowdSupply, da bi v živo prešteli, koliko TinyPICO je bilo prodanih. Morda bi bilo to mogoče doseči neposredno na ESP8266 ali ESP32, toda ker je razčlenjeval več različnih podatkovnih točk na več različnih elementih, bi bilo to zapleteno.

Na koncu sem ustvaril projekt NodeJS in podatke razčlenil s knjižnico, imenovano cheerio, in zelo dobro se je izšlo. Ta projekt sem gostil na strežniku v oblaku, ki sem ga že imel, vendar lahko tovrstni projekt zaženete na pi, če nimate česa takega.

6. korak: Omejitve uporabe

Omejitve uporabe
Omejitve uporabe

Ena stvar, ki bi lahko vplivala na vse te pristope, je doseganje omejitev uporabe spletnih mest. V običajnih API -jih je običajno precej dobro dokumentirano, koliko zahtev lahko vložite na minuto ali na dan, in na podlagi tega lahko omejite zahteve za projekte. Ko strgate, ne veste, kakšne so te meje, zato tvegate, da jih boste zadeli in jih morda blokirali. Ne morem dati nobenega natančnega nasveta, kako bi ga omejili, zato ostanite v njihovih dobrih knjigah, vendar bi mislil, da bi bilo pod vsako minuto vse prepogosto, razen morda primerov, kot je kickstarter, kjer se zdi, da sami zahtevajo vsakih nekaj sekund.

7. korak: Hvala za branje

Upajmo, da je ta videoposnetek pomagal, če vas zanima razčlenjevanje podatkov neposredno s spletnih strani na vašem ESP8266 ali ESP32. Imate še kakšno vprašanje na to temo, ki ga nisem obravnaval? Sporočite mi v spodnjih komentarjih ali pa se mi pridružite in kopici drugih ustvarjalcev na mojem strežniku Discord, kjer lahko razpravljamo o tej temi ali kateri koli drugi, povezani z izdelovalci, ki jih imate, ljudje so res v pomoč, zato je to odličen kraj za obešanje ven

Prav tako bi se rad zahvalil svojim Github sponzorjem, ki mi pomagajo pri podpori, kar počnem. Resnično to cenim. Če ne veste, se Github za prvo leto ujema s sponzorstvi, zato se bodo v naslednjih nekaj mesecih 100% ujemali s tem.

Hvala za branje!

Priporočena: