Невозможно извлечь основные данные с помощью ThingspeakHTTP.
Я ничего не знаю о HTML, но хочу получить процент вероятности того, что северное сияние будет видно с этой веб-страницы. http://aurorawatch.ca/. Я ввел это в поле URL-адреса и выбрал версию HTML 1.
Когда я проверяю нужный текстовый элемент и копирую Xpath, я получаю следующее:
"/html/body/div1/div[5]/table/tbody/tr1/td/div1/table[2]/tbody/tr [2]/td/div/table/tbody/tr/td[2]/span"
и введите это значение в поле «строка анализа» приложения ThingSpeak API, но получите следующую ошибку:
"Ошибка анализа документа, попробуйте другую строку анализа."
Большинство людей, столкнувшихся с этой ошибкой, похоже, получают данные, которые не загружаются вместе с исходной страницей, поэтому я думаю, что что-то упускаю.
Если есть лучшее решение для передачи этого номера на мой ESP8266, чем создание API ThingsSpeak, я бы тоже хотел его услышать!
@Alex Kuebel, 👍0
Обсуждение1 ответ
Лучший ответ:
Вам следует использовать эту страницу, поскольку другая является главной страницей сайта и, скорее всего, будет динамической:
- http://www.aurorawatch.ca/index .php?option=com_content&task=view&id=28&Itemid=47
XPath также немного отличается. Первый tbody
в указанном пути на самом деле не существует. Вам также следует добавить /text()
в конец пути, чтобы просто вернуть текстовое содержимое узла:
/html/body/div[1]/div[5]/table[2]/tr[3]/td/table/tbody/tr/td[2]/span/text()
- Как публиковать запросы HTTP POST на моем веб-сайте?
- Простой запрос GET с ESP8266HTTPClient
- NodeMCU ESP8266 отключился от WiFi после нескольких часов работы
- esp32 http client response только 200 не получил данные после этого
- Скетч Arduino для NodeMCU v1.0 (ESP8266-12E) не имеет ошибок при компиляции, но не запускается на плате NodeMCU v1.0 (ESP8266-12E)
- Метод HTTP PUT на NodeMCU/ESP8266
- Как связать MPU9250 и NodeMcu?
- Как защитить ссылку/URL-адрес формы ESP-12E для управления светодиодом
Опубликуйте свой код для лучшего понимания вопроса, @leoc7
Возможно, веб-сайт блокируетthingspeak как парсер. Вы хотите, чтобы ESP8266 выполнял запрос GET, а затем анализировал данные. Я бы предложил использовать http://www.aurorawatch.ca/index.php?option=com_content&task=view&id=28&Itemid=47, поскольку это а) меньше данных и б) с меньшей вероятностью их изменения., @Majenko
@Маженко Спасибо за быстрый ответ! Это хорошее предложение — использовать альтернативную страницу. Я тоже думал, что это возможно, но когда я оставляю строку парсера пустой, запрос API ThingsSpeak возвращает полный сайт. Я знаю, что это выходит за рамки вопроса, но есть ли у вас какие-либо рекомендации о том, с чего начать изучение того, как выполнить нужный мне запрос GET от ESP8266?, @Alex Kuebel
почему вы выбираете HTTP 1.0 (HTML 1?), @Juraj
@Juraj Я думаю, именно на этой версии построен веб-сайт, с которого я пытаюсь получить данные., @Alex Kuebel
Я не вижу причин, по которым это не сработает. Я вручную загрузил исходный код веб-страницы, предварительно обработал его с помощью xmllint, затем обработал каждый узел xpath, и все получилось именно так, как должно быть. Однако он не может его разобрать. Возможно, в содержании есть что-то, что не нравится анализатору ThingSpeak., @Majenko
Я проверил дату, и она вернула логотип. что-то добавляется на страницу со скриптом или стилем?, @Juraj
Хорошо, у меня работает. Ему не нравится первое «тело». Удалите это, и он начнет работать. Также полезно добавить в конец
/text()
. Я анализирую эту страницу: http://www.aurorawatch.ca/index.php?option=com_content&task=view&id=28&Itemid=47 с помощью этого xpath:/html/body/div[1]/div[5]/ таблица[2]/tr[3]/td/table/tbody/tr/td[2]/span/text()
, @Majenkoпросто ради интереса: вот еще сайт, на котором есть проценты видимости полярных сияний.... https://services.swpc.noaa.gov/text/aurora-nowcast-map.txt, @jsotola
@jsotola, это то место, куда я заглянул в первую очередь, где есть несколько замечательных ресурсов! Однако формат текстового массива немного двусмысленен (от -90 до 90 градусов сверху вниз или снизу вверх?), и мне посчастливилось поступить в университет, который заставил Аврору следить за городом, в котором я живу., @Alex Kuebel