Isi kandungan:

Mengikis Data Dengan Langkah ESP8266 / ESP32: 7
Mengikis Data Dengan Langkah ESP8266 / ESP32: 7

Video: Mengikis Data Dengan Langkah ESP8266 / ESP32: 7

Video: Mengikis Data Dengan Langkah ESP8266 / ESP32: 7
Video: Tutorial Komunikasi Data Dengan MQTT Pada Esp32 2024, Julai
Anonim
Mengikis Data Dengan ESP8266 / ESP32
Mengikis Data Dengan ESP8266 / ESP32
Mengikis Data Dengan ESP8266 / ESP32
Mengikis Data Dengan ESP8266 / ESP32

Pernahkah anda ingin mendapatkan data untuk projek Arduino anda, tetapi tidak ada API awam untuknya? Atau dalam kes seperti API Instagram di mana proses penyediaan untuknya tidak begitu mudah?

Dalam Instructable ini kita akan melihat 2 pilihan berbeza untuk mengikis data dari laman web untuk projek ESP8266 atau ESP32 anda.

Langkah 1: Lihat Video

Image
Image

Saya telah membuat video yang merangkumi perkara yang sama dengan arahan ini, jadi jika anda berminat, sila lihat!

Langkah 2: Sebelum Kita Mula

Sebelum Kita Bermula
Sebelum Kita Bermula
Sebelum Kita Bermula
Sebelum Kita Bermula

Hanya perlu diketahui bahawa data yang akan saya bicarakan untuk mengikis adalah data yang dihadapi orang ramai dan tidak memerlukan pengesahan. Oleh itu, katakanlah sebagai contoh, jumlah pelanggan YouTube saya yang tepat hanya tersedia untuk saya di studio pembuat, jadi peranti perlu membuat permintaan yang disahkan sebagai saya untuk memuatkannya. Permintaan jenis ini akan berada di luar ruang lingkup untuk video ini. Ujian cepat untuk memeriksa apakah itu akan dilindungi adalah dengan mencoba memuatkan halaman dalam tetingkap penyamaran kerana tidak akan memasukkan anda ke laman web secara automatik.

Untuk teknik yang diliputi dalam Instructable ini, kita harus menggunakan beberapa alat pembangun yang tersedia di penyemak imbas. Saya akan menunjukkannya dengan Firefox, tetapi saya tahu Chrome tertentu mempunyai alat yang serupa dan saya yakin penyemak imbas lain juga memilikinya.

Langkah 3: API Bukan Awam (Spoiler: Instructables Has One!)

Cara pertama yang akan kita lihat adalah menggunakan API bukan umum. Ini tidak akan selalu tersedia, tetapi jika ini adalah kaedah yang mesti anda gunakan. Apa yang saya sebut "API non-publik" pada dasarnya adalah di mana laman web menggunakan API yang tidak diiklankan di laman web mereka di belakang tabir untuk mengambil data yang ingin kita dapatkan.

Terdapat beberapa sebab mengapa ini menjadi pilihan utama untuk digunakan.

  1. Kelebihan terbesar adalah tidak mungkin sering berubah seperti laman web, jika anda mengikis data secara langsung dari laman web HTML, setiap kali mereka membuat perubahan ke laman web, penguraian anda mungkin akan hancur.
  2. Ia biasanya lebih cekap data. Semasa anda mengikis laman web, pada dasarnya anda memuat turun keseluruhan halaman HTML untuk mengekstrak maklumat daripadanya, API hanya akan mengembalikan titik data sehingga biasanya permintaan yang jauh lebih kecil.
  3. Biasanya lebih mudah untuk dihuraikan. Biasanya API mengembalikan data dalam format JSON yang mudah dihuraikan, ini benar terutamanya jika anda mengekstrak beberapa keping data.

Mula-mula kita harus mengetahui sama ada laman web menggunakan persediaan seperti ini. Petunjuk terbesar adalah jika laman web ini mengemas kini nilainya dalam waktu nyata seperti yang berlaku di Kickstarter, tetapi walaupun tidak, masih ada harapan bahawa ia mungkin menggunakan persediaan ini. Instructables menggunakan API bukan umum untuk mengambil beberapa data untuk laman web mereka walaupun tidak disegarkan dalam masa nyata.

Untuk memeriksa sama ada laman web ini menggunakan persediaan ini, masukkan mod pembangun penyemak imbas anda, saya dapati cara termudah untuk melakukan ini adalah klik kanan pada halaman dan pilih "periksa elemen".

Anda kemudian mahu pergi ke tab rangkaian, ini akan memaparkan permintaan yang dibuat oleh laman web di latar belakang, perhatikan bahawa anda mungkin perlu memuat semula halaman setelah membuka tab ini kerana ia hanya akan menunjukkan permintaan yang dibuat mulai sekarang.

Anda biasanya ingin mencari yang dengan jenis "json". Terdapat banyak permintaan di sini, jadi mungkin membantu menyusun mengikut jenis. Anda dapat melihatnya sangat jelas di halaman kempen kickstarter bahawa ia menggunakan persediaan ini kerana anda dapat melihat permintaan berterusan dibuat ke titik akhir "stats.json". Di halaman pengarang Instructables (mis. Laman saya adalah "https://www.instructables.com/member/witnessmenow/"), mereka tidak membuat permintaan berterusan, tetapi anda dapat melihat antara lain permintaan tersembunyi untuk "endAuthorStats" endpoint.

Untuk mengetahui lebih banyak maklumat mengenai permintaan ini, anda boleh mengkliknya. Anda seharusnya dapat memperoleh semua maklumat yang anda perlukan dari sini untuk meniru permintaan tersebut. Tetapi sebelum anda melakukan itu, anda ingin memeriksa terlebih dahulu bahawa ia mempunyai data yang anda mahukan. Klik, pada tab respons dan lihat apakah data ada.

Sekiranya ia mengandungi data yang anda perlukan, anda sudah bersedia! Anda kemudian boleh menggunakan pendekatan yang sama yang dibincangkan dalam video saya sebelumnya mengenai menyambung ke API. Versi pendek dari itu adalah untuk memastikan permintaan berfungsi seperti yang diharapkan pada alat seperti Postman terlebih dahulu dan kemudian gunakan contoh projek ini untuk menguji bahawa ia berfungsi pada peranti anda.

Untuk menguraikan data JSON, saya akan mengesyorkan menggunakan ArudinoJSON dalam kebanyakan senario, jika ini adalah perkara yang anda mahukan arahannya, beritahu saya!

Langkah 4: Mengikis Data Secara Langsung

Mengikis Data Secara Langsung
Mengikis Data Secara Langsung
Mengikis Data Secara Langsung
Mengikis Data Secara Langsung
Mengikis Data Secara Langsung
Mengikis Data Secara Langsung

Selanjutnya kita akan melihat mengikis data secara langsung dari halaman web, ini meminta halaman web penuh pada peranti dan menguraikan data yang kita inginkan. Saya sudah menyebut kelebihan API bukan awam berbanding kaedah ini, tetapi kadang-kadang keperluan mesti!

Satu perkara yang penting untuk diperhatikan di sini, jika anda sudah biasa dengan pengembangan web, anda mungkin terbiasa menggunakan fitur elemen pemeriksaan untuk mengetahui maklumat tentang elemen tertentu dan bagaimana strukturnya. Ini harus dielakkan untuk pendekatan ini, kerana laman web moden biasanya diubah secara dinamis menggunakan Javascript, yang tidak akan berlaku pada peranti anda. Kod HTML yang tersedia pada peranti anda hanya akan menjadi halaman web asal yang dimuat turun. Contoh yang baik dari ini adalah halaman TeamTrees, jumlah sumbangan semasa bermula dari 0 dan dimuat ke dalam halaman kemudian dengan animasi ini, tetapi tidak seperti dua contoh yang telah kita lihat sebelumnya, ia tidak memuat data di latar belakang, jadi data yang betul mesti ada di tempat lain.

Untuk melihat kod halaman web yang asli, Anda dapat mengklik kanan halaman dan memilih "Lihat Sumber". Anda kemudian ingin mencari data tertentu yang anda mahukan, jadi dalam contoh TeamTrees ketika kami mencari jumlah sumbangan semasa, kami dapat melihat jumlah sebenar disimpan dalam harta benda data elemen hitungan, di sinilah kita perlu mengikis data dari.

Anda perlu mencari rentetan carian yang membawa anda ke data anda, Lebih mudah untuk mengetahui ini sebelum membuat kod untuk peranti. Untuk contoh ini, mencari "kiraan data \" "membawa saya tepat ke data yang kami mahukan, yang sempurna. Kami tidak perlu bimbang ia juga sesuai di tempat lain di halaman, kerana ia akan menjadi yang teratas terlebih dahulu. Sekiranya anda perlu memukul yang ketiga, anda boleh memprogramnya untuk mengabaikan 2 yang pertama anda tekan.

Sekiranya kita melihat contoh TeamTrees, seperti sebelumnya kita telah melewati tajuk respons dan sekarang melihat bahagian respons (yang merupakan laman web). Apa yang kembali dari pelanggan adalah aliran data. Kami tidak peduli dengan apa-apa sehingga pertanyaan carian kami, jadi kami melakukan pelanggan. Cari. Sekiranya ia menemui pertanyaan carian, ia akan kembali benar dan ia akan mengalirkan aliran ke akhir pertanyaan. Perkara seterusnya yang tersedia dari aliran adalah data yang kita cari, tetapi dalam kes ini kita tidak pasti berapa lama data tersebut, tetapi kita tahu itu semua maklumat antara tempat kita sekarang dalam aliran dan koma terbalik seterusnya. Kita dapat mencapainya dengan menggunakan "client.readBytesUntil" yang melakukan apa yang dikatakannya, ia membaca bait menjadi penyangga sehingga mencapai pertanyaan yang ditentukan. Pastikan penyangga yang anda baca cukup besar untuk menyimpan semua data, saya rasa kami cukup selamat di sini dengan 32!

Sekiranya anda mempunyai semua data yang anda perlukan, maka anda tidak perlu membaca lagi data. Saya tidak menutup sambungan di sini kerana nampaknya tidak menimbulkan masalah pada ESP8266, nampaknya menyebabkan masalah dengan ESP32, jadi saya menambah pelanggan. Hentikan (). Untuk benar-benar jujur, saya tidak pasti mengapa saya meletakkannya di bahagian atas kaedah, saya rasa lebih masuk akal untuk menutupnya setelah anda mempunyai data yang anda mahukan.

Langkah 5: Mengikis Data Menggunakan Pelayan Luar:

Mengikis Data Menggunakan Pelayan Luar
Mengikis Data Menggunakan Pelayan Luar
Mengikis Data Menggunakan Pelayan Luar
Mengikis Data Menggunakan Pelayan Luar

Hanya satu topik lain yang perlu disentuh, ada alat yang jauh lebih baik untuk menguraikan persekitaran berasaskan komputer biasa seperti NodeJS daripada pada pengawal mikro, jadi kadang-kadang masuk akal untuk membuat perkhidmatan yang mengambil data dari halaman web dan memberikan yang lebih mudah titik akhir untuk ESP8266 atau ESP32 anda. Salah satu contohnya ialah mengikis halaman CrowdSupply untuk mendapatkan jumlah langsung berapa banyak TinyPICO yang dijual. Mungkin saja dapat mencapainya secara langsung pada ESP8266 atau ESP32, tetapi kerana menguraikan beberapa titik data yang berlainan pada beberapa elemen yang berbeza, maka itu akan menjadi rumit.

Saya akhirnya membuat projek NodeJS dan menguraikan data menggunakan perpustakaan yang disebut cheerio dan ia berjaya dengan baik. Saya menghoskan projek ini di pelayan awan yang sudah saya miliki, tetapi anda boleh menjalankan projek seperti ini jika anda tidak mempunyai persediaan seperti itu.

Langkah 6: Had Penggunaan

Had Penggunaan
Had Penggunaan

Satu perkara yang berpotensi mempengaruhi semua pendekatan ini adalah mencapai had penggunaan laman web. Dalam API biasa, biasanya didokumentasikan dengan baik berapa banyak permintaan yang dapat anda buat per minit atau sehari dan anda boleh mengehadkan permintaan projek berdasarkan ini. Semasa anda mengikis, anda tidak tahu had ini sehingga anda berisiko memukulnya dan berpotensi disekat. Saya tidak dapat memberikan nasihat yang tepat untuk mengehadkannya supaya anda tetap berada dalam buku-buku mereka yang baik, tetapi saya rasa apa-apa di bawah setiap minit terlalu kerap, selain daripada kes seperti kickstarter di mana mereka seolah-olah membuat permintaan setiap beberapa saat.

Langkah 7: Terima kasih kerana Membaca

Semoga video ini dapat membantu sekiranya anda berminat untuk menghuraikan data secara langsung dari laman web di ESP8266 atau ESP32 anda. Adakah anda mempunyai soalan lain mengenai topik yang tidak saya bahas? Tolong beritahu saya dalam komen di bawah ini, atau sertai saya dan sekumpulan pembuat lain di pelayan Discord saya, di mana kita boleh membincangkan topik ini atau mana-mana pembuat yang berkaitan dengan anda, orang-orang sangat membantu di sana jadi ini adalah tempat yang bagus untuk menggantung keluar

Saya juga ingin mengucapkan terima kasih banyak kepada Penaja Github saya yang membantu menyokong apa yang saya lakukan, saya sangat menghargainya. Sekiranya anda tidak tahu, Github sepadan dengan penajaan untuk tahun pertama, jadi jika anda membuat penajaan, mereka akan sepadan dengan 100% untuk beberapa bulan akan datang.

Terima kasih untuk membaca!

Disyorkan: