Cuprins:

Răzuirea datelor cu un ESP8266 / ESP32: 7 pași
Răzuirea datelor cu un ESP8266 / ESP32: 7 pași

Video: Răzuirea datelor cu un ESP8266 / ESP32: 7 pași

Video: Răzuirea datelor cu un ESP8266 / ESP32: 7 pași
Video: Cum ne dam seama daca avem segmentii uzati sau valvele ,fara sa desfacem motorul 2024, Iulie
Anonim
Răzuirea datelor cu un ESP8266 / ESP32
Răzuirea datelor cu un ESP8266 / ESP32
Răzuirea datelor cu un ESP8266 / ESP32
Răzuirea datelor cu un ESP8266 / ESP32

Ați dorit vreodată să obțineți date pentru proiectele dvs. Arduino, dar nu există un API public pentru acesta? Sau în cazuri cum ar fi API-ul Instagram în care procesul de configurare nu este foarte convenabil?

În acest instructable vom analiza 2 opțiuni diferite pentru răzuirea datelor de pe un site web pentru proiectele dvs. ESP8266 sau ESP32.

Pasul 1: Verificați videoclipul

Image
Image

Am realizat un videoclip care acoperă același lucru cu acest instructable, așa că, dacă sunteți interesat, vă rugăm să verificați!

Pasul 2: Înainte de a începe

Înainte de a începe
Înainte de a începe
Înainte de a începe
Înainte de a începe

Doar o remarcă faptul că datele despre care voi vorbi despre răzuire sunt date publice și nu necesită autentificare. De exemplu, să spunem, de exemplu, numărul meu exact de abonați YouTube este disponibil doar pentru mine în studioul creatorilor, astfel încât dispozitivul ar trebui să facă o cerere care s-a autentificat ca mine pentru a-l încărca. Aceste tipuri de solicitări nu vor fi incluse în acest videoclip. Un test rapid pentru a verifica dacă ar fi acoperit este să încercați să încărcați pagina într-o fereastră incognito, deoarece aceasta nu vă va conecta automat la niciun site.

Pentru tehnicile acoperite în acest instructabil va trebui să folosim unele dintre instrumentele pentru dezvoltatori care sunt disponibile în browsere. Le voi demonstra cu Firefox, dar știu că Chrome are anumite instrumente similare și sunt sigur că și alte browsere le au.

Pasul 3: API-uri non-publice (Spoiler: Instructables Are One!)

Primul mod în care vom analiza este utilizarea unui API non-public. Aceasta nu va fi întotdeauna disponibilă, dar dacă este aceasta, aceasta este cu siguranță metoda pe care ar trebui să o folosiți. Ceea ce numesc „API non-public” este în esență locul în care un site folosește un API nepublicizat pe site-ul său din culise pentru a prelua datele pe care dorim să le obținem.

Există câteva motive pentru care aceasta ar fi opțiunea preferată de utilizat.

  1. Cel mai mare avantaj este că este puțin probabil să se schimbe la fel de des ca o pagină web, dacă răzuieți datele direct din HTML-ul paginii web, de fiecare dată când modifică site-ul, analiza dvs. s-ar putea rupe.
  2. În mod normal, este mai eficient în ceea ce privește datele. Când scrapați o pagină web, descărcați întreaga pagină HTML pentru a extrage bucăți de informații din aceasta, API-urile vor returna doar puncte de date, așa că în mod normal ar fi cereri mult mai mici.
  3. De obicei, este mai ușor de analizat. În mod normal API-urile returnează date în format JSON, care este ușor de analizat, acest lucru este valabil mai ales dacă extrageți mai multe bucăți de date.

Mai întâi trebuie să aflăm dacă pagina web utilizează o astfel de configurare. Cel mai mare indiciu este dacă site-ul actualizează valoarea în timp real, așa cum se întâmplă pe Kickstarter, dar chiar dacă nu, există încă speranța că ar putea utiliza această configurare. Instructables folosește un API non-public pentru preluarea unor date pentru site-ul lor, chiar dacă nu se reîmprospătează în timp real.

Pentru a verifica dacă site-ul folosește această configurare, introduceți modul dezvoltator al browserului dvs. Am găsit că cel mai simplu mod de a face acest lucru este să faceți clic dreapta pe pagină și să selectați „inspectare element”.

Apoi veți dori să accesați fila de rețea, aceasta va afișa solicitările pe care pagina web le face în fundal, rețineți că este posibil să trebuiască să reîncărcați pagina după deschiderea acestei file, deoarece va afișa numai cererile făcute de acum înainte.

În mod normal, doriți să le căutați pe cele cu tipul „json”. Aici pot exista o mulțime de solicitări, deci poate fi util să sortați după tip. Puteți vedea că este foarte evident pe pagina campaniei kickstarter că folosește această configurare, deoarece puteți vedea solicitări constante făcute către un punct final „stats.json”. Pe pagina de autori Instructables (de exemplu, a mea este „https://www.instructables.com/member/witnessmenow/”), aceștia nu fac cereri constante, dar puteți vedea ascunsă printre ceilalți o cerere de a afișa punctul final „ShowAuthorStats”.

Pentru a afla mai multe informații despre această solicitare, puteți face clic pe ea. Ar trebui să puteți obține de aici toate informațiile de care aveți nevoie pentru a reproduce solicitarea. Dar înainte de a face acest lucru, doriți să verificați mai întâi dacă are datele dorite. Faceți clic pe fila de răspuns și vedeți dacă datele sunt acolo.

Dacă conține datele de care aveți nevoie, sunteți gata! Puteți utiliza apoi aceleași abordări discutate în videoclipul meu anterior despre conectarea la API-uri. Versiunea scurtă a acestuia este să vă asigurați că solicitarea funcționează așa cum era de așteptat pe un instrument ca Postman mai întâi și apoi utilizați acest exemplu de proiect pentru a testa dacă funcționează pe dispozitivul dvs.

Pentru analizarea datelor JSON, aș recomanda utilizarea ArudinoJSON în majoritatea scenariilor, dacă este ceva despre care ați dori un instructable, anunțați-mă!

Pasul 4: Răzuirea directă a datelor

Răzuirea datelor direct
Răzuirea datelor direct
Răzuirea datelor direct
Răzuirea datelor direct
Răzuirea directă a datelor
Răzuirea directă a datelor

În continuare ne vom uita la răzuirea datelor direct de pe pagina web, aceasta solicită pagina web completă de pe dispozitiv și analizează datele pe care le dorim. Am menționat deja avantajele pe care le are API-ul non-public față de această metodă, dar uneori trebuie să fie!

Un lucru important este de remarcat aici, dacă sunteți familiarizat cu dezvoltarea web, este posibil să fiți obișnuiți să utilizați funcția de inspectare a elementelor pentru a afla informații despre un anumit element și cum este structurat. Acest lucru ar trebui evitat pentru această abordare, deoarece paginile web moderne sunt de obicei schimbate dinamic folosind Javascript, ceea ce nu se va întâmpla pe dispozitivul dvs. Codul HTML disponibil pe dispozitivul dvs. va fi doar pagina web originală descărcată. Un bun exemplu în acest sens este pagina TeamTrees, numărul actual de donații începe ca 0 și se încarcă mai târziu în pagină cu această animație, dar spre deosebire de cele două exemple pe care le-am văzut anterior, nu încarcă datele în fundal, deci datele corecte trebuie să fie în altă parte.

Pentru a vizualiza codul original al paginii web, puteți face clic dreapta pe pagină și selectați „Vizualizați sursa”. Apoi, doriți să căutați datele pe care le doriți, așa că, în exemplul TeamTrees, atunci când căutăm numărul de donații curent, putem vedea cum numărul real este stocat în proprietatea de numărare a datelor a elementului de numărare, aici trebuie să răzuiește datele de la.

Trebuie să găsiți un șir de căutare care să vă conducă la datele dvs. Este mult mai ușor să aflați acest lucru înainte de a codifica dispozitivul. Pentru acest exemplu, căutarea „numărare de date” îmi aduce până la datele dorite, ceea ce este perfect. Nu trebuie să ne facem griji că se potrivește și în alte locuri ale paginii, deoarece va ajunge mai întâi în partea de sus. Dacă ar fi trebuit să-l lovești pe cel de-al treilea, l-ai putea programa doar pentru a ignora primele 2 pe care le-ai lovit.

Dacă aruncăm o privire la exemplul TeamTrees, ca înainte, trecem peste anteturile de răspuns și acum ne uităm la corpul răspunsului (care este pagina web). Ceea ce revine de la client este un flux de date. Nu ne pasă de nimic până la interogarea noastră de căutare, așa că facem un client.find. Dacă găsește interogarea de căutare, va reveni adevărat și va muta fluxul până la sfârșitul interogării. Următorul lucru disponibil din flux va fi datele pe care le căutăm, dar în acest caz nu suntem siguri de cât timp vor fi datele, dar știm că sunt toate informațiile dintre locul nostru actual în flux și următoarea virgulă inversată. Putem realiza acest lucru folosind „client.readBytesUntil“care face ceea ce spune, citește octeții într-un buffer până când atinge interogarea specificată. Doar asigurați-vă că tamponul pe care îl citiți este suficient de mare pentru a conține toate datele, cred că suntem destul de în siguranță aici cu 32!

Dacă aveți toate datele de care aveți nevoie, atunci nu mai trebuie să citiți date. Nu am închis conexiunea aici, deoarece nu părea să provoace o problemă pe ESP8266, părea să provoace probleme cu ESP32, așa că am adăugat un client.stop (). Pentru a fi complet sincer, nu sunt sigur de ce am pus-o pe partea de sus a metodei, aș crede că ar avea mai mult sens să o închideți odată ce aveți datele dorite.

Pasul 5: Scraping date folosind un server extern:

Scraping date folosind un server extern
Scraping date folosind un server extern
Scraping date folosind un server extern
Scraping date folosind un server extern

Doar un alt subiect pe care trebuie să îl atingeți, există instrumente mult mai bune pentru analiza pe medii obișnuite bazate pe computer, cum ar fi NodeJS, decât pe un microcontroler, deci uneori ar putea avea sens să creați un serviciu care să preia datele de pe o pagină web și să ofere o versiune mai simplă. punct final pentru ESP8266 sau ESP32. Un exemplu în acest sens a fost eliminarea paginii CrowdSupply pentru a obține un număr live de câte TinyPICO au fost vândute. Poate că a fost posibil să se realizeze direct pe un ESP8266 sau ESP32, dar deoarece analiza mai multe puncte de date diferite pe mai multe elemente diferite, așa că ar fi fost complicat.

Am ajuns să creez un proiect NodeJS și am analizat datele folosind o bibliotecă numită cheerio și a funcționat foarte bine. Am găzduit acest proiect pe serverul cloud pe care l-am avut deja, dar ați putea rula acest tip de proiect pe un pi dacă nu ați avea așa ceva de configurare.

Pasul 6: Limite de utilizare

Limite de utilizare
Limite de utilizare

Un lucru care ar putea avea impact asupra tuturor acestor abordări este atingerea limitelor de utilizare a site-urilor. În API-urile obișnuite, este în mod normal destul de bine documentat câte solicitări puteți face pe minut sau pe zi și puteți limita cererile dvs. de proiecte pe baza acestora. Când răzuiești, nu știi care sunt aceste limite, așa că riscă să le lovești și să te blochezi. Nu pot oferi niciun sfat exact cu privire la limitarea acestuia, astfel încât să rămâneți în cărțile lor bune, dar aș crede că orice sub fiecare minut ar fi prea des, în afară de cazuri, cum ar fi kickstarter, în care par să facă cereri la fiecare câteva secunde.

Pasul 7: Vă mulțumim pentru lectură

Sperăm că acest videoclip a ajutat dacă sunteți interesat să analizați datele direct de pe paginile web pe ESP8266 sau ESP32. Aveți alte întrebări pe tema pe care nu le-am abordat? Vă rog să-mi spuneți în comentariile de mai jos sau să vă alăturați mie și o grămadă de alți producători pe serverul meu Discord, unde putem discuta despre acest subiect sau despre orice alt producător legat de dvs., oamenii sunt cu adevărat de ajutor acolo, așa că este un loc minunat de agățat afară

Aș dori, de asemenea, să mulțumesc enorm sponsorilor mei Github care mă ajută să susțin ceea ce fac, chiar îl apreciez. Dacă nu știți, Github corespunde sponsorizărilor pentru primul an, așa că, dacă faceți o sponsorizare, acestea se vor potrivi 100% pentru următoarele luni.

Mulțumesc pentru lectură!

Recomandat: