Talaan ng mga Nilalaman:
- Hakbang 1: Suriin ang Video
- Hakbang 2: Bago Kami Magsimula
- Hakbang 3: Mga Hindi Pampubliko na API (Spoiler: Ang Mga Instructionable Ay May Isa!)
- Hakbang 4: Direktang Pag-scrap ng Data
- Hakbang 5: Pag-scrap ng Data Gamit ang isang Panlabas na Server:
- Hakbang 6: Mga Limitasyon sa Paggamit
- Hakbang 7: Salamat sa Pagbasa
Video: Pag-scrap ng Data Sa Isang ESP8266 / ESP32: 7 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:12
Nais mo bang makakuha ng data para sa iyong mga proyekto sa Arduino, ngunit walang pampublikong API para dito? O sa mga kaso tulad ng Instagram API kung saan ang proseso ng pag-setup para sa ay hindi masyadong maginhawa?
Sa Instructable na ito titingnan namin ang 2 magkakaibang mga pagpipilian para sa pag-scrap ng data mula sa isang website para sa iyong mga proyekto sa ESP8266 o ESP32.
Hakbang 1: Suriin ang Video
Gumawa ako ng isang video na sumasaklaw sa parehong bagay tulad ng itinuturo sa iyo, kaya kung interesado ka, mangyaring suriin ito!
Hakbang 2: Bago Kami Magsimula
Isang ulo lamang na ang data na sasabihin ko tungkol sa pag-scrape ay nakaharap sa publiko ang data at hindi nangangailangan ng anumang pagpapatotoo. Kaya sabihin halimbawa, ang aking eksaktong bilang ng subscriber ng YouTube ay magagamit lamang sa akin sa loob ng tagalikha studio, kaya't ang aparato ay kailangang gumawa ng isang kahilingan na napatunayan bilang akin upang mai-load ito. Ang mga ganitong uri ng mga kahilingan ay magiging wala sa saklaw para sa video na ito. Ang isang mabilis na pagsubok upang suriin ito ay saklaw ay upang subukang i-load ang pahina sa isang incognito window dahil hindi ka awtomatiko na mag-log in sa anumang mga site.
Para sa mga diskarte na sakop sa Instructable na ito kakailanganin naming gumamit ng ilan sa mga tool ng developer na magagamit sa mga browser. Ipapakita ko ang mga ito sa Firefox, ngunit alam ko para sa tiyak na ang Chrome ay may mga katulad na tool at sigurado akong mayroon din ang iba pang mga browser.
Hakbang 3: Mga Hindi Pampubliko na API (Spoiler: Ang Mga Instructionable Ay May Isa!)
Ang unang paraan na titingnan namin ay ang paggamit ng isang hindi pang-publiko na API. Hindi ito laging magagamit, ngunit kung ito ito ay tiyak na ang pamamaraan na dapat mong hangarin na gamitin. Ang tinatawag kong "hindi pang-publiko na API" ay karaniwang kung saan ang isang site ay gumagamit ng isang hindi napansin na API sa kanilang website sa likod ng mga eksena upang makuha ang data na nais naming makuha.
Mayroong ilang mga kadahilanan kung bakit ito ang magiging ginustong pagpipilian na gagamitin.
- Ang pinakamalaking kalamangan ay malamang na hindi ito mabago nang madalas tulad ng isang webpage, kung direktang na-scrape mo ang data mula sa web page na HTML, sa tuwing gumawa sila ng pagbabago sa site, maaaring masira ang iyong pag-parse.
- Karaniwan itong mas mahusay sa data. Kapag nag-scrape ka ng isang webpage karaniwang nai-download mo ang buong pahina ng HTML upang kumuha ng mga piraso ng impormasyon mula rito, ibabalik lamang ng mga API ang mga puntos ng data upang maging normal na mas maliit ang mga kahilingan.
- Kadalasan mas madaling mag-parse. Karaniwan ang mga API ay nagbabalik ng data sa format na JSON na prangka na i-parse, totoo ito lalo na kung kumukuha ka ng maraming mga data.
Una naming alamin kung gumagamit ang webpage ng isang setup na tulad nito. Ang pinakamalaking pahiwatig ay kung ina-update ng site ang halaga sa real-time na katulad nito sa Kickstarter, ngunit kahit na wala pa rin ay may pag-asa pa rin na maaaring magamit nito ang setup. Ang mga tagubilin ay gumagamit ng isang hindi pampubliko na API para sa pagkuha ng ilang data para sa kanilang site kahit na hindi ito nagre-refresh nang real time.
Upang suriin kung ginagamit ng site ang pag-set up na ito, ipasok ang mode ng developer ng iyong browser, nahanap ko ang pinakamadaling paraan ng paggawa nito ay pag-right click sa pahina at piliin ang "inspect element".
Pagkatapos ay gugustuhin mong pumunta sa tab ng network, ipapakita nito ang mga kahilingan sa webpage na ginagawa sa background, tandaan na maaaring kailanganin mong i-reload ang pahina pagkatapos buksan ang tab na ito dahil magpapakita lamang ito ng mga kahilingan na ginawa mula ngayon.
Karaniwan mong nais na hanapin ang mga may uri na "json". Maaaring maraming mga kahilingan dito, kaya't maaaring makatulong na pag-uri-uriin ayon sa uri. Maaari mong makita na napaka halata sa pahina ng kampanya ng kickstarter na ginagamit nito ang pag-set up na ito dahil nakikita mo ang patuloy na mga kahilingan na ginagawa sa isang endpoint na "stats.json". Sa pahina ng mga may-akda ng Instructable (hal. Ang akin ay "https://www.instructables.com/member/witnessmenow/"), hindi sila gumagawa ng pare-pareho na mga kahilingan, ngunit maaari mong makita ang nakatago sa iba pa ng isang kahilingan sa endpoint ng "showAuthorStats".
Upang malaman ang karagdagang impormasyon tungkol sa kahilingang ito, maaari kang mag-click dito. Dapat mong makuha ang lahat ng impormasyong kailangan mo mula dito upang makaya ang kahilingan. Ngunit bago mo gawin iyon nais mong i-double check muna na mayroon itong data na gusto mo. Mag-click, sa tab na tugon at tingnan kung nandoon ang data.
Kung naglalaman ito ng data na kailangan mo, handa ka na! Maaari mo nang magamit ang parehong mga diskarte na tinalakay sa aking nakaraang video tungkol sa pagkonekta sa mga API. Ang maikling bersyon nito ay upang matiyak na gagana ang kahilingan tulad ng inaasahan sa isang tool tulad ng Postman muna at pagkatapos ay gamitin ang halimbawang proyekto na ito upang subukan na gumagana ito sa iyong aparato.
Para sa pag-parse ng data ng JSON inirerekumenda kong gamitin ang ArudinoJSON sa karamihan ng mga sitwasyon, kung ito ay isang bagay na nais mong turuan tungkol sa, ipaalam lamang sa akin!
Hakbang 4: Direktang Pag-scrap ng Data
Susunod na titingnan namin ang pag-scrap ng data nang direkta mula sa webpage, humihiling ito ng buong webpage sa aparato at pag-parse ng data na gusto namin. Nabanggit ko na ang mga kalamangan ng hindi pang-publiko na API na mayroon sa pamamaraang ito, ngunit kung minsan kailangan ng mga kinakailangan!
Isang bagay na mahalagang tandaan dito, kung pamilyar ka sa pag-unlad ng web maaari kang magamit sa paggamit ng tampok na elemento ng inspeksyon upang malaman ang impormasyon tungkol sa isang partikular na elemento at kung paano ito nakabalangkas. Dapat itong iwasan para sa pamamaraang ito, dahil ang mga modernong web page ay karaniwang nabago nang pabago-bago gamit ang Javascript, na hindi mangyayari sa iyong aparato. Ang HTML code na magagamit sa iyong aparato ay magiging orihinal na webpage lamang na na-download. Ang isang magandang halimbawa nito ay ang pahina ng TeamTrees, ang kasalukuyang bilang ng donasyon ay nagsisimula bilang 0 at mai-load sa pahina sa paglaon ng animasyong ito, ngunit hindi katulad ng dalawang halimbawang nakita natin dati, hindi nito na-load ang data sa background, kaya ang tamang data ay dapat nasa ibang lugar.
Upang matingnan ang orihinal na code ng web page maaari kang mag-right click sa pahina at piliin ang "View Source". Nais mong hanapin ang partikular na data na gusto mo, kaya sa halimbawa ng TeamTrees kapag naghahanap kami para sa kasalukuyang bilang ng donasyon, maaari naming makita ang aktwal na bilang na nakaimbak sa pag-aari ng bilang ng data ng bilang ng elemento, ito ay kung saan kailangan nating i-scrape ang data mula sa.
Kailangan mong maghanap ng isang string ng paghahanap na magdadala sa iyo sa iyong data, Mas madaling malaman ito bago mag-coding para sa aparato. Para sa halimbawang ito, ang paghahanap para sa "data-count \" "ay magdadala sa akin ng hanggang sa data na gusto namin, na perpekto. Hindi namin kailangang mag-alala na tumutugma rin ito sa iba pang mga lugar sa pahina, dahil ito ay unang tatama sa tuktok. Kung kailangan mong ma-hit ang ika-3, maaari mo lamang i-program ito upang huwag pansinin ang unang 2 na-hit mo.
Kung titingnan natin ang halimbawa ng TeamTrees, tulad ng dati ay nilaktawan namin ang mga header ng tugon at tinitingnan namin ngayon ang katawan ng tugon (na ang webpage). Ang bumalik sa client ay isang stream ng data. Wala kaming pakialam sa anumang bagay hanggang sa aming query sa paghahanap, kaya gumawa kami ng isang client.find. Kung hahanapin nito ang query sa paghahanap ay magbabalik ito totoo at ililipat nito ang stream sa dulo ng query. Ang susunod na magagamit na bagay mula sa stream ay ang data na aming hinahanap, ngunit sa kasong ito hindi namin sigurado kung gaano katagal ang data, ngunit alam namin na ang lahat ng impormasyon sa pagitan ng aming kasalukuyang lugar sa stream at sa susunod na baligtad na kuwit.. Maaari nating makamit ito sa pamamagitan ng paggamit ng "client.readBytesUntil" na ginagawa kung ano ang sinasabi nito, binabasa nito ang mga byte sa isang buffer hanggang sa maabot nito ang tinukoy na query. Siguraduhin lamang na ang buffer na iyong binabasa ay sapat na malaki upang hawakan ang lahat ng data, sa palagay ko medyo ligtas tayo dito na may 32!
Kung mayroon ka ng lahat ng data na kailangan mo, hindi mo na kailangang basahin ang data. Hindi ko isinara ang koneksyon dito dahil mukhang hindi ito sanhi ng isang problema sa ESP8266, tila nagdulot ito ng mga problema sa ESP32, kaya nagdagdag ako ng isang client.stop (). Upang maging ganap na matapat, hindi ako sigurado kung bakit ko itinaguyod ang tuktok ng pamamaraan, sa palagay ko mas may katuturan upang isara ito kapag mayroon ka ng data na gusto mo.
Hakbang 5: Pag-scrap ng Data Gamit ang isang Panlabas na Server:
Isa lamang sa iba pang paksang tatalakayin, maraming mga mas mahusay na tool para sa pag-parse sa regular na mga kapaligiran na nakabatay sa computer tulad ng NodeJS kaysa sa isang micro controller, kaya't minsan ay may katuturan na gumawa ng isang serbisyo na kukuha ng data mula sa isang webpage at nagbibigay ng isang mas simple endpoint para sa iyong ESP8266 o ESP32. Ang isang halimbawa nito ay ang pag-scrape ng pahina ng CrowdSupply upang makakuha ng live na bilang ng kung ilang TinyPICO ang naibenta. Maaaring posible na makamit ito nang direkta sa isang ESP8266 o ESP32, ngunit dahil sa pag-parse nito ng maraming magkakaibang mga punto ng data sa maraming magkakaibang elemento, kaya't naging kumplikado ito.
Natapos akong lumikha ng isang proyekto ng NodeJS at na-parse ang data gamit ang isang silid-aklatan na tinatawag na cheerio at ito ay napakahusay. In-host ko ang proyektong ito sa cloud server na mayroon ako, ngunit maaari mong patakbuhin ang ganitong uri ng proyekto sa isang pi kung wala kang katulad ng pag-set up na iyon.
Hakbang 6: Mga Limitasyon sa Paggamit
Ang isang bagay na maaaring makaapekto sa lahat ng mga pamamaraang ito ay ang pagpindot sa mga limitasyon sa paggamit ng mga site. Sa mga regular na API normal na dokumentado ito kung gaano karaming mga kahilingan ang maaari mong gawin bawat minuto o bawat araw at maaari mong limitahan ang iyong mga kahilingan sa mga proyekto batay dito. Kapag nag-scrape ka, hindi mo alam kung ano ang mga limitasyong ito kaya't mapanganib mo ang pagpindot sa kanila at potensyal na ma-block. Hindi ako makapagbigay ng eksaktong eksaktong payo sa paglilimita dito upang manatili ka sa kanilang magagandang libro, ngunit sa palagay ko ang anumang bagay sa ilalim ng bawat minuto ay magiging napakadalas, maliban sa marahil mga kaso tulad ng kickstarter kung saan tila sila mismo ang humiling ng mga kahilingan.
Hakbang 7: Salamat sa Pagbasa
Inaasahan kong nakatulong ang video na ito kung interesado ka sa pag-parse ng data nang direkta mula sa mga webpage sa iyong ESP8266 o ESP32. Mayroon ka bang ibang mga katanungan sa paksang hindi ko nasasaklaw? Mangyaring ipaalam sa akin sa mga komento sa ibaba, o sumali sa akin at ng maraming iba pang mga tagagawa sa aking server ng Discord, kung saan maaari naming pag-usapan ang paksang ito o anumang iba pang kaugnay na tagagawa na mayroon ka, ang mga tao ay talagang kapaki-pakinabang doon kaya't isang magandang lugar na mag-hang palabas
Nais ko ring magbigay ng isang malaking salamat sa aking mga Sponsor ng Github na tumutulong na suportahan ang aking ginagawa, talagang pinahahalagahan ko ito. Kung hindi mo alam, ang Github ay tumutugma sa mga sponsorship para sa unang taon, kaya kung gumawa ka ng isang sponsorship itutugma nila ito ng 100% sa mga susunod na buwan.
Salamat sa pagbabasa!
Inirerekumendang:
HeadBot - isang Robot na Nagbabago ng Sarili para sa Pag-aaral at Pag-abot sa STEM: 7 Mga Hakbang (na may Mga Larawan)
HeadBot - isang Self-Balancing Robot para sa STEM Learning and Outreach: Headbot - isang dalawang talampakan ang taas, self-balancing robot - ay ang ideya ng South Eugene Robotics Team (SERT, FRC 2521), isang mapagkumpitensyang pangkat ng robotics ng high school sa UNA Kompetisyon ng Robotics, mula sa Eugene, Oregon. Ang sikat na robot sa pag-abot na ito ay ginagawang
Visuino Paano Gumamit ng isang Button Bilang isang Pag-input upang Makontrol ang Mga Bagay Tulad ng LED: 6 Mga Hakbang
Visuino Paano Gumamit ng isang Button Bilang isang Pag-input upang Makontrol ang Mga Bagay Tulad ng LED: Sa tutorial na ito matututunan natin kung paano i-ON at I-OFF ang LED gamit ang isang simpleng pindutan at Visuino. Panoorin ang isang video ng demonstrasyon
Pag-iniksyon sa Keyboard / Awtomatikong I-type ang Iyong Password Sa Isang Pag-click !: 4 Mga Hakbang (na may Mga Larawan)
Pag-iniksyon sa Keyboard / Awtomatikong I-type ang Iyong Password Sa Isang Pag-click !: Mahirap ang mga password … at ang pag-alala sa isang ligtas ay mas mahirap pa! Bukod dito kung mayroon kang kasama, nagbabagong password ay magtatagal ito upang mai-type. Ngunit huwag matakot sa aking mga kaibigan, mayroon akong solusyon dito! Lumikha ako ng isang maliit na awtomatikong pag-type ng makina na
Pag-aayos ng isang Monitor Sa Isang Breadmaker: AKA Huwag Itapon Ito !: 5 Mga Hakbang (na may Mga Larawan)
Pag-aayos ng isang Monitor Sa Isang Breadmaker: AKA Huwag Itapon Ito :: Lokal sa Victoria, BC mayroon kaming isang lalaki na kumukuha ng itinapon ngunit magagamit na kagamitan sa IT at ipinapasa ito pabalik sa komunidad nang libre. Ang kanyang mga pagsisikap ay pinapanatili ang mga ginamit na electronics mula sa mga landfill at pagtulong sa mga tao na kamangha-mangha. Kinuha ko ang isang
Roomblock: isang Platform para sa Pag-aaral ng Pag-navigate sa ROS Sa Roomba, Raspberry Pi at RPLIDAR: 9 Mga Hakbang (na may Mga Larawan)
Roomblock: isang Platform para sa Pag-aaral ng Pag-navigate sa ROS Sa Roomba, Raspberry Pi at RPLIDAR: Ano ito? &Quot; Roomblock " ay isang robot platform na binubuo ng isang Roomba, isang Raspberry Pi 2, isang laser sensor (RPLIDAR) at isang mobile baterya. Ang mounting frame ay maaaring gawin ng mga 3D printer. Pinapayagan ang sistema ng nabigasyon ng ROS na gumawa ng isang mapa ng mga silid at gamitin ang