Obsah:
- Krok 1: Podívejte se na video
- Krok 2: Než začneme
- Krok 3: Neveřejná API (Spoiler: Instructables has one!)
- Krok 4: Přímé škrábání dat
- Krok 5: Škrábání dat pomocí externího serveru:
- Krok 6: Omezení použití
- Krok 7: Děkujeme za přečtení
Video: Škrábání dat pomocí ESP8266/ESP32: 7 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Chtěli jste někdy získat data pro své projekty Arduino, ale neexistuje pro ně veřejné API? Nebo v případech, jako je Instagram API, kde proces instalace není příliš pohodlný?
V tomto Instructable se podíváme na 2 různé možnosti seškrábání dat z webu pro vaše projekty ESP8266 nebo ESP32.
Krok 1: Podívejte se na video
Natočil jsem video, které pokrývá stejnou věc jako tento návod, takže pokud vás to zajímá, podívejte se na to!
Krok 2: Než začneme
Jen si uvědomte, že data, o kterých budu hovořit o škrábání, jsou veřejně přístupná data a nevyžadují žádné ověřování. Řekněme například, že můj přesný počet odběratelů na YouTube je mi k dispozici pouze ve studiu pro autory, takže zařízení by muselo podat žádost, která se autentizuje jako já, abych jej načtl. Tyto typy požadavků budou pro toto video mimo rozsah. Rychlý test ke kontrole, zda by byl pokryt, je pokusit se načíst stránku v anonymním okně, protože vás to automaticky nepřihlásí na žádné weby.
Pro techniky zahrnuté v tomto Instructable budeme muset použít některé vývojářské nástroje, které jsou k dispozici v prohlížečích. Budu je demonstrovat pomocí Firefoxu, ale vím, že Chrome má podobné nástroje a jsem si jist, že je mají i jiné prohlížeče.
Krok 3: Neveřejná API (Spoiler: Instructables has one!)
První způsob, na který se podíváme, je použití neveřejného API. To nebude vždy k dispozici, ale pokud ano, je to určitě metoda, kterou byste se měli snažit použít. To, čemu říkám „neveřejné API“, je v zásadě situace, kdy určitý web používá v zákulisí na svém webu nereklamované API k načtení dat, která hledáme.
Existuje několik důvodů, proč by to byla upřednostňovaná možnost použití.
- Největší výhodou je, že je nepravděpodobné, že se bude měnit tak často jako webová stránka. Pokud data seškrábnete přímo z HTML webové stránky, pokaždé, když na webu provedou změnu, může dojít k přerušení analýzy.
- Obvykle je datově efektivnější. Když škrábáte webovou stránku, v podstatě stahujete celou stránku HTML, abyste z ní získali informace, rozhraní API budou vracet pouze datové body, takže by normálně byly mnohem menší požadavky.
- Obvykle je jednodušší analyzovat. Rozhraní API obvykle vrací data ve formátu JSON, který lze snadno analyzovat, což platí zejména v případě, že extrahujete více dat.
Nejprve musíme zjistit, zda webová stránka používá takové nastavení. Největší stopou je, jestli stránka aktualizuje hodnotu v reálném čase jako na Kickstarteru, ale i když ne, stále existuje naděje, že by toto nastavení mohla použít. Instructables používá neveřejné API pro načítání některých dat pro svůj web, i když se v reálném čase neobnovuje.
Chcete -li zkontrolovat, zda web používá toto nastavení, přejděte do vývojářského režimu vašeho prohlížeče. Zjistil jsem, že nejjednodušší způsob, jak to udělat, je kliknout pravým tlačítkem na stránku a vybrat „zkontrolovat prvek“.
Poté budete chtít přejít na kartu síť, na pozadí se budou zobrazovat požadavky, které webová stránka vytváří. Všimněte si, že po otevření této karty budete možná muset stránku znovu načíst, protože se budou zobrazovat pouze požadavky od nynějška.
Obvykle chcete hledat ty s typem „json“. Zde může být mnoho požadavků, takže může pomoci seřadit podle typu. Na stránce kampaně kickstarter můžete vidět, že toto nastavení používá, protože vidíte neustálé požadavky na koncový bod „stats.json“. Na stránce autorů Instructables (např. Moje je „https://www.instructables.com/member/witnessmenow/“) nevytvářejí stálé požadavky, ale mezi ostatními můžete vidět skrytý požadavek na koncový bod „showAuthorStats“.
Chcete -li zjistit více informací o tomto požadavku, můžete na něj kliknout. Zde byste měli mít možnost získat všechny informace, které potřebujete k replikaci žádosti. Ale než to uděláte, musíte nejprve zkontrolovat, zda má požadovaná data. Klikněte na kartu odpovědi a zjistěte, zda jsou data k dispozici.
Pokud obsahuje potřebná data, jste připraveni! Potom můžete použít stejné přístupy, jaké jsem popsal v mém předchozím videu o připojení k API. Krátká verze je zajistit, aby požadavek fungoval podle očekávání na nástroji, jako je Postman, a poté pomocí tohoto ukázkového projektu otestujte, zda funguje na vašem zařízení.
Pro analýzu dat JSON bych doporučil použít ArudinoJSON ve většině scénářů, pokud je to něco, o čem byste chtěli instruktáž, dejte mi vědět!
Krok 4: Přímé škrábání dat
Dále se podíváme na škrábání dat přímo z webové stránky, to je požadavek na plnou webovou stránku v zařízení a analýzu dat, která chceme. Již jsem zmínil výhody neveřejného API, které má nad touto metodou, ale někdy potřebuje!
Jedna věc, kterou je zde důležité poznamenat, pokud jste obeznámeni s vývojem webu, můžete být zvyklí používat funkci inspect element k vyhledání informací o konkrétním prvku a jeho struktuře. Tomuto přístupu je třeba se vyhnout, protože moderní webové stránky se obvykle dynamicky mění pomocí Javascriptu, což se ve vašem zařízení nestane. HTML kód, který je k dispozici ve vašem zařízení, bude pouze původní stažená webová stránka. Dobrým příkladem je stránka TeamTrees, aktuální počet darů začíná na 0 a načte se na stránku později s touto animací, ale na rozdíl od dvou příkladů, které jsme viděli dříve, nenačte data na pozadí, takže správná data musí být někde jinde.
Chcete -li zobrazit původní kód webové stránky, klikněte na stránku pravým tlačítkem a vyberte možnost „Zobrazit zdroj“. Poté budete chtít vyhledat konkrétní požadovaná data, takže v příkladu TeamTrees, když hledáme aktuální počet darů, vidíme, že skutečný počet je uložen ve vlastnosti počítání dat prvku count, to je místo, kde potřebujeme seškrábnout data z.
Musíte najít vyhledávací řetězec, který vás přivede k vašim datům. Je mnohem snazší to zjistit před kódováním zařízení. V tomto případě se vyhledáním výrazu „počet dat \“dostanu k požadovaným datům, což je perfektní. Nemusíme se obávat, že se bude shodovat i na jiných místech na stránce, protože jako první zasáhne první. Pokud jste potřebovali zasáhnout třetí, mohli byste ho naprogramovat tak, aby ignoroval první 2, které trefíte.
Pokud se podíváme na příklad TeamTrees, jako předtím jsme přeskočili záhlaví odpovědí a nyní se díváme na tělo odpovědi (což je webová stránka). To, co se vrací od klienta, je proud dat. Nestaráme se o nic až do našeho vyhledávacího dotazu, takže děláme client.find. Pokud vyhledávací dotaz najde, vrátí hodnotu true a přesune stream na konec dotazu. Další věc, která je ve streamu k dispozici, budou data, která hledáme, ale v tomto případě si nejsme jisti, jak dlouho data budou, ale víme, že to jsou všechny informace mezi naším aktuálním místem ve streamu a další převrácenou čárkou. Toho můžeme dosáhnout použitím „client.readBytesUntil“, který dělá to, co říká, čte bajty do vyrovnávací paměti, dokud nenarazí na zadaný dotaz. Jen se ujistěte, že vyrovnávací paměť, do které čtete, je dostatečně velká, aby pojala všechna data, myslím, že jsme tu celkem v bezpečí s 32!
Pokud máte všechna potřebná data, nemusíte data dále číst. Zde jsem připojení nezavřel, protože se nezdálo, že by to způsobilo problém na ESP8266, zdálo se, že to způsobuje problémy s ESP32, takže jsem přidal client.stop (). Abych byl úplně upřímný, nejsem si jistý, proč jsem to dal na vrchol metody, domníval bych se, že by dávalo větší smysl to zavřít, až budete mít požadovaná data.
Krok 5: Škrábání dat pomocí externího serveru:
Jen jedno další téma, kterého se dotknout, existují mnohem lepší nástroje pro analýzu v běžných počítačových prostředích, jako je NodeJS, než na mikrořadiči, takže někdy může mít smysl vytvořit službu, která načítá data z webové stránky a poskytuje jednodušší koncový bod pro váš ESP8266 nebo ESP32. Jedním z příkladů bylo vyškrábání stránky CrowdSupply, abyste získali živý počet prodaných TinyPICO. Možná to bylo možné dosáhnout přímo na ESP8266 nebo ESP32, ale protože to analyzovalo několik různých datových bodů na několika různých prvcích, bylo by to komplikované.
Nakonec jsem vytvořil projekt NodeJS a analyzoval data pomocí knihovny s názvem cheerio a fungovalo to velmi dobře. Hostoval jsem tento projekt na cloudovém serveru, který jsem již měl, ale tento typ projektu byste mohli spustit na pi, pokud byste něco takového neměli.
Krok 6: Omezení použití
Jedna věc, která by mohla potenciálně ovlivnit všechny tyto přístupy, je překročení limitů využití webů. V běžných API je obvykle docela dobře zdokumentováno, kolik požadavků můžete podat za minutu nebo za den, a na základě toho můžete omezit požadavky na své projekty. Když škrábáte, nevíte, jaká jsou tato omezení, takže riskujete, že je narazíte a potenciálně budete zablokováni. Nemohu poskytnout žádné přesné rady, jak to omezit, abyste zůstali v jejich dobrých knihách, ale domníval bych se, že cokoli za každou minutu by bylo příliš často, kromě případů, jako je například kickstarter, kde se zdá, že každých pár sekund sami žádají.
Krok 7: Děkujeme za přečtení
Naštěstí toto video pomohlo, pokud máte zájem o analýzu dat přímo z webových stránek na vašem ESP8266 nebo ESP32. Máte nějaké další otázky k tématu, které jsem nepokryl? Dejte mi prosím vědět v níže uvedených komentářích, nebo se připojte ke mně a spoustě dalších tvůrců na mém serveru Discord, kde můžeme diskutovat o tomto tématu nebo o jakémkoli jiném, co se týká výrobce, lidé jsou tam opravdu nápomocní, takže je to skvělé místo k zavěšení ven
Také bych chtěl moc poděkovat svým sponzorům Github, kteří pomáhají podporovat to, co dělám, opravdu si toho vážím. Pokud nevíte, Github odpovídá sponzorství pro první rok, takže pokud uděláte sponzorství, bude mu to odpovídat 100% v příštích několika měsících.
Děkuji za přečtení!
Doporučuje:
Kvílení a škrábání: 5 kroků
Squeal & Scrape: Tento projekt lze provést frézováním desek plošných spojů pomocí souborů nalezených na githubu nebo pomocí desky vero podle obrázku. Je vyžadováno určité pájení, takže je zapotřebí obvyklé vybavení: pájecí stojánek, pájka, čistič drátů, řezačka drátů
Jak vytvořit záznamník vlhkosti a teploty v reálném čase pomocí Arduino UNO a SD karty - Simulace záznamníku dat DHT11 v Proteusu: 5 kroků
Jak vytvořit záznamník vlhkosti a teploty v reálném čase pomocí Arduino UNO a SD karty | Simulace záznamníku dat DHT11 v Proteus: Úvod: Ahoj, toto je Liono Maker, zde je odkaz na YouTube. Vytváříme kreativní projekt s Arduinem a pracujeme na vestavěných systémech. Data-Logger: Data logger (také data-logger nebo data recorder) je elektronické zařízení, které zaznamenává data v průběhu času s
Experimenty v pokročilém protokolování dat (pomocí Pythonu): 11 kroků
Experimenty s pokročilým protokolováním dat (pomocí Pythonu): Existuje mnoho instrukcí pro protokolování dat, takže když jsem chtěl vytvořit svůj vlastní projekt protokolování, rozhlédl jsem se po partě. Některé byly dobré, některé ne tolik, a tak jsem se rozhodl vzít některé lepší nápady a vytvořit si vlastní aplikaci. Tento resu
Pořizujte a odesílejte obrázky pomocí kamery ESP32-Cam pomocí bezdrátového procesoru ESP8266 WeMos D1 R1 s Uno: 7 kroků
Zachyťte a odešlete obrázky pomocí ESP32-Cam pomocí ESP8266 WeMos D1 R1 Wifi procesoru s Uno: Zachyťte obrázek pomocí ESP32-Cam (OV2640) pomocí ESP8266 WeMos D1 R1 WiFI procesoru s Uno a odešlete jej na e-mail, uložte na Disk Google a odešlete na Whatsapp pomocí Twilio. Požadavky: ESP8266 WeMos D1 R1 WiFI procesor s Uno (https: // protosupplies
3 způsoby, jak ovládat škrábání kliknutím Makey Makey: 4 kroky
3 způsoby, jak ovládat škrábání pomocí Makey Makey Click: V této příručce se naučíte TŘI způsoby, jak naprogramovat " kliknutí " vstup pomocí Scratch. Také vám ukážeme, jak přistupovat ke kliknutí na zadní straně Makey Makey. Jediné zásoby, které budete pro tento projekt potřebovat: Makey Makey ClassicJumper Wire od