Sadržaj:

Brisanje podataka pomoću ESP8266/ESP32: 7 koraka
Brisanje podataka pomoću ESP8266/ESP32: 7 koraka

Video: Brisanje podataka pomoću ESP8266/ESP32: 7 koraka

Video: Brisanje podataka pomoću ESP8266/ESP32: 7 koraka
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Novembar
Anonim
Struganje podataka pomoću ESP8266/ESP32
Struganje podataka pomoću ESP8266/ESP32
Struganje podataka pomoću ESP8266/ESP32
Struganje podataka pomoću ESP8266/ESP32

Jeste li ikada htjeli dobiti podatke za svoje Arduino projekte, ali za to ne postoji javni API? Ili u slučajevima poput Instagram API -ja gdje postupak postavljanja nije zgodan?

U ovom Instructableu ćemo pogledati 2 različite opcije za brisanje podataka sa web stranice za vaše projekte ESP8266 ili ESP32.

Korak 1: Pogledajte video

Image
Image

Napravio sam video koji pokriva isto što i ovo uputstvo, pa ako ste zainteresovani, provjerite ga!

Korak 2: Prije nego počnemo

Prije nego počnemo
Prije nego počnemo
Prije nego počnemo
Prije nego počnemo

Samo napominjem da su podaci o kojima ću govoriti o struganju javni podaci i ne zahtijevaju nikakvu provjeru autentičnosti. Recimo, na primjer, moj tačan broj pretplatnika na YouTube dostupan mi je samo u studiju za kreatore, tako da bi uređaj morao postaviti zahtjev za autentifikaciju kao ja da ga učitam. Ova vrsta zahtjeva neće biti dostupna za ovaj videozapis. Brzi test za provjeru pokrivenosti je pokušaj učitavanja stranice u anonimnom prozoru jer vas neće automatski prijaviti na bilo koju web lokaciju.

Za tehnike obuhvaćene ovim uputstvom morat ćemo koristiti neke od razvojnih alata koji su dostupni u preglednicima. Pokazat ću ih s Firefoxom, ali sigurno znam da Chrome ima slične alate i siguran sam da ih imaju i drugi preglednici.

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

Prvi način na koji ćemo pogledati je korištenje nejavnog API-ja. Ovo neće uvijek biti dostupno, ali ako je to definitivno metoda koju trebate koristiti. Ono što ja nazivam "nejavni API" u osnovi je mjesto gdje web lokacija iza svoje scene koristi neprijavljeni API na svojoj web stranici kako bi dohvatila podatke koje želimo dobiti.

Postoji nekoliko razloga zašto bi ovo bila preferirana opcija za korištenje.

  1. Najveća prednost je u tome što se vjerojatno neće mijenjati tako često kao web stranica, ako grebete podatke izravno s HTML -a web stranice, svaki put kada naprave promjenu na web lokaciji, vaše raščlanjivanje bi se moglo pokvariti.
  2. Obično je efikasniji za prenos podataka. Kada stružete web stranicu, u osnovi preuzimate cijelu HTML stranicu kako biste iz nje izvukli dijelove podataka, API -ji će vratiti samo podatkovne točke pa bi obično bili mnogo manji zahtjevi.
  3. Obično je lakše raščlaniti. Obično API -i vraćaju podatke u JSON formatu koji je jednostavan za raščlanjivanje, što je posebno istinito ako ekstrahirate više komada podataka.

Prvo moramo saznati koristi li web stranica ovakvo postavljanje. Najveći trag je ako web lokacija ažurira vrijednost u stvarnom vremenu kao na Kickstarteru, ali čak i ako se to ne dogodi, još uvijek postoji nada da bi mogla koristiti ovu postavku. Instructables koristi nejavni API za dohvaćanje nekih podataka za svoju web lokaciju iako se ne osvježava u stvarnom vremenu.

Da biste provjerili koristi li web mjesto ovu postavku, uđite u način rada za razvojne programere svog preglednika. Najlakši način za to je da kliknete desnim tasterom miša na stranicu i odaberete „pregledaj element“.

Zatim ćete htjeti otići na karticu mreža, koja će prikazati zahtjeve koje web stranica postavlja u pozadini. Imajte na umu da ćete možda morati ponovo učitati stranicu nakon otvaranja ove kartice jer će od sada prikazivati samo zahtjeve.

Obično želite potražiti one s tipom “json”. Ovdje može biti mnogo zahtjeva, pa može pomoći sortiranje po tipu. Na stranici kickstarter kampanje možete vidjeti da je vrlo očito da koristi ovu postavku, jer možete vidjeti stalne zahtjeve upućene krajnjoj tački "stats.json". Na stranici autora Instructables (npr. Moja je "https://www.instructables.com/member/witnessmenow/") oni ne postavljaju stalne zahtjeve, ali možete vidjeti skriven među ostalima zahtjev za "showAuthorStats" krajnju tačku.

Da biste saznali više informacija o ovom zahtjevu, kliknite na njega. Odavde biste trebali moći dobiti sve potrebne informacije za ponavljanje zahtjeva. Ali prije nego što to učinite, prvo morate dvaput provjeriti ima li podataka koje želite. Kliknite na karticu odgovora i provjerite postoje li podaci.

Ako sadrži potrebne podatke, sve je spremno! Zatim možete koristiti iste pristupe o povezivanju na API -je o mom prethodnom videu. Kratka verzija toga je da se pobrinete da zahtjev radi kako se očekuje na alatu poput Poštara, a zatim pomoću ovog primjera projekta provjerite radi li na vašem uređaju.

Za raščlanjivanje JSON podataka preporučio bih korištenje ArudinoJSON -a u većini scenarija, ako je ovo nešto o čemu želite uputstva, samo mi javite!

Korak 4: Izravno brisanje podataka

Izravno brisanje podataka
Izravno brisanje podataka
Izravno brisanje podataka
Izravno brisanje podataka
Izravno brisanje podataka
Izravno brisanje podataka

Zatim ćemo pogledati brisanje podataka izravno s web stranice, ovo zahtijeva potpunu web stranicu na uređaju i raščlanjivanje podataka koje želimo ukloniti. Već sam spomenuo prednosti API-ja koji nije javni u odnosu na ovu metodu, ali ponekad mora!

Ovdje je važno napomenuti jednu stvar, ako ste upoznati s web razvojem, mogli biste se naviknuti na korištenje funkcije inspect element kako biste saznali informacije o određenom elementu i kako je on strukturiran. Ovo bi trebalo izbjeći za ovaj pristup, jer se moderne web stranice obično dinamički mijenjaju pomoću Javascripta, što se neće dogoditi na vašem uređaju. HTML kôd koji je dostupan na vašem uređaju bit će samo originalna web stranica koja se preuzima. Dobar primjer za to je stranica TeamTrees, trenutni broj donacija počinje kao 0 i kasnije se učitava na stranicu s ovom animacijom, ali za razliku od dva primjera koja smo već vidjeli, ne učitava podatke u pozadini, pa tačni podaci moraju biti negdje drugdje.

Za prikaz izvornog koda web stranice možete desnom tipkom miša kliknuti na stranicu i odabrati „Prikaži izvor“. Zatim želite tražiti određene podatke koje želite, pa u primjeru TeamTrees-a, kada tražimo trenutni broj donacija, možemo vidjeti da je stvarni broj pohranjen u svojstvu broja podataka elementa count, ovdje trebamo izvadite podatke iz.

Morate pronaći niz za pretraživanje koji vas vodi do vaših podataka. Mnogo je lakše to shvatiti prije kodiranja za uređaj. Na primjer, traženje „broja podataka“dovodi me do željenih podataka, što je savršeno. Ne moramo se brinuti da se podudara i na drugim mjestima na stranici, jer će prvo doći na prvo mjesto. Ako ste ipak trebali pogoditi treću, jednostavno biste je mogli programirati da zanemari prve dvije koje pogodite.

Ako pogledamo primjer TeamTrees -a, kao i prije, preskočili smo zaglavlja odgovora i sada gledamo tijelo odgovora (a to je web stranica). Ono što se vraća od klijenta je tok podataka. Ne zanima nas ništa do našeg upita za pretraživanje, pa radimo klijenta.nađite. Ako ipak pronađe upit za pretraživanje, vratit će se true i premjestit će tok na kraj upita. Sljedeća stvar dostupna iz prijenosa bit će podaci koje tražimo, ali u ovom slučaju nismo sigurni koliko će podaci trajati, ali znamo da su to sve informacije između našeg trenutnog mjesta u prijenosu i sljedeće obrnute zareze. To možemo postići korištenjem “client.readBytesUntil” koji radi ono što kaže, čita bajtove u bafer sve dok ne pogodi navedeni upit. Samo provjerite je li bafer u koji čitate dovoljno velik da sadrži sve podatke, mislim da smo ovdje prilično sigurni s 32!

Ako imate sve potrebne podatke, više ne morate čitati podatke. Ovdje nisam prekinuo vezu jer izgleda da nije uzrokovao problem na ESP8266, čini se da je uzrokovao probleme s ESP32, pa sam dodao client.stop (). Da budem potpuno iskren, nisam siguran zašto sam to stavio na vrh metode, mislio bih da bi imalo više smisla zatvoriti ga kad budete imali željene podatke.

Korak 5: Brisanje podataka pomoću vanjskog servera:

Brisanje podataka pomoću vanjskog servera
Brisanje podataka pomoću vanjskog servera
Brisanje podataka pomoću vanjskog servera
Brisanje podataka pomoću vanjskog servera

Još jedna tema za dodir, postoje mnogo bolji alati za raščlanjivanje u uobičajenim računalnim okruženjima kao što je NodeJS nego na mikro kontroleru, pa ponekad može imati smisla napraviti uslugu koja preuzima podatke s web stranice i pruža jednostavnije krajnja točka za vaš ESP8266 ili ESP32. Jedan od primjera ovoga je struganje stranice CrowdSupply da biste uživo vidjeli koliko je TinyPICO prodano. Možda je to bilo moguće postići izravno na ESP8266 ili ESP32, ali kako je raščlanjivao više različitih točaka podataka na nekoliko različitih elemenata, bilo bi komplicirano.

Na kraju sam stvorio NodeJS projekt i raščlanio podatke pomoću biblioteke pod nazivom cheerio i to je jako dobro funkcioniralo. Bio sam domaćin na cloud serveru koji sam već imao, ali ovu vrstu projekta možete pokrenuti na pi ako nemate nešto slično.

Korak 6: Ograničenja upotrebe

Ograničenja upotrebe
Ograničenja upotrebe

Jedna stvar koja bi potencijalno mogla utjecati na sve ove pristupe je dostizanje ograničenja upotrebe web lokacija. U običnim API -ima obično je prilično dobro dokumentirano koliko zahtjeva možete postaviti po minuti ili dnevno, a na osnovu toga možete ograničiti zahtjeve za projekte. Kada stružete, ne znate koja su to ograničenja, pa riskirate da ih udarite i potencijalno blokirate. Ne mogu vam dati nikakav tačan savjet o tome da to ograničite, tako da ostanete u njihovim dobrim knjigama, ali mislim da bi bilo što ispod svake minute bilo prečesto, osim možda slučajeva poput kickstartera gdje se čini da sami podnose zahtjeve svakih nekoliko sekundi.

Korak 7: Hvala vam na čitanju

Nadamo se da je ovaj videozapis pomogao ako ste zainteresirani za raščlanjivanje podataka izravno s web stranica na vašem ESP8266 ili ESP32. Imate li još pitanja na ovu temu koja nisam obrađivao? Javite mi u komentarima ispod ili se pridružite meni i gomili drugih proizvođača na mom Discord serveru, gdje možemo razgovarati o ovoj temi ili o bilo kojoj drugoj temi vezanoj za proizvođača, ljudi su tu od velike pomoći, pa je to odlično mjesto za objesiti van

Također bih se želio zahvaliti mojim Github sponzorima koji mi podržavaju ono što radim, zaista to cijenim. Ako ne znate, Github se podudara sa sponzorstvima prve godine, pa ako napravite sponzorstvo, oni će mu odgovarati 100% sljedećih nekoliko mjeseci.

Hvala na čitanju!

Preporučuje se: