Ссылка: "https://rp5.ru/Погода_в_Тамбове" (именно кириллицей).
Шаблон поиска: "<div id="forecastShort-content">(.+?) <div id="windHint" class="cold dangerHint">"
Модератор: immortal
Jilber, спасибо! Так всё заработало. Я почему-то о таком варианте не подумал дажеJilber писал(а): ↑Ср янв 05, 2022 7:43 pmА если попробовать так:
Ссылка: "https://rp5.ru/Погода_в_Тамбове" (именно кириллицей).
Шаблон поиска: "<div id="forecastShort-content">(.+?) <div id="windHint" class="cold dangerHint">"
Мне интересен именно такой формат: Сегодня ожидается...
Сайт заполняет значения при помощи js скрипта - обычным GET данные с него не получишь, на момент запроса их на странице просто нетуzemyat писал(а): ↑Чт июл 28, 2022 10:38 pmПомогите пожалуйста с регулярным выражением
https://app.weathercloud.net/d5904597256#profile куда попадает данные с локальной метеостанции (без авторизации)
С этого сайта требуется получить текущую температуру, скорость и направление ветра, и значение tittle на картинке облачности
<span id="temp_cur">15</span>
<span id="wspd_cur">1</span>
<span id="wdir_cur">NW</span>
<a id="present-weather-string" rel="tooltip" title="" data-original-title="малооблачно">
Мои попытки получить данные запаролись на первом этапе получение текущей температуры.
Пробовал:
<span id="temp_cur">(.+?)</span>
<span id="temp_cur">(/d+)</span>
<.*>(.*)°C<.*>
(/d+)°C
Пишет INCORRECT VALUE:
Код: Выделить всё
import requests
cookies = {
'PHPSESSID': 'f827955883fc9212d47fea2aed5a996e',
'WEATHERCLOUD_CSRF_TOKEN': 'ecaa6741b9cb21a665c36872da01f19a0b9c8a55s%3A88%3A%22MW1uTmQ1Yk5CfmNQNElIME1OWHZCU2lScGFZcHBpMHLtox5-6T8ZtQKfvzXtR2wk3VJIc35xZq2x9uCsDruxGA%3D%3D%22%3B',
'_ga': 'GA1.2.1415913915.1659038309',
'_gid': 'GA1.2.1003055442.1659038309',
'__gads': 'ID=aa5d54ed2668e683-22dfc3d081d4003d:T=1659038309:RT=1659038309:S=ALNI_Ma88ofIz3W-KMH1uaBcrqAEh2G8-A',
'_gat': '1',
'WEATHERCLOUD_RECENT_ED3C8': 'f6ca7a274ff0eed723ced7339a4024019b1d2680s%3A97%3A%226ef64e9a65d7df2b10dee00bf32d2d190a9a28aa%7B%22_devices%22%3A%22%7B%5C%225904597256%5C%22%3A1659038816%7D%22%2C%22_metars%22%3A%22%7B%7D%22%7D%22%3B',
}
headers = {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
'Connection': 'keep-alive',
# Requests sorts cookies= alphabetically
# 'Cookie': 'PHPSESSID=f827955883fc9212d47fea2aed5a996e; WEATHERCLOUD_CSRF_TOKEN=ecaa6741b9cb21a665c36872da01f19a0b9c8a55s%3A88%3A%22MW1uTmQ1Yk5CfmNQNElIME1OWHZCU2lScGFZcHBpMHLtox5-6T8ZtQKfvzXtR2wk3VJIc35xZq2x9uCsDruxGA%3D%3D%22%3B; _ga=GA1.2.1415913915.1659038309; _gid=GA1.2.1003055442.1659038309; __gads=ID=aa5d54ed2668e683-22dfc3d081d4003d:T=1659038309:RT=1659038309:S=ALNI_Ma88ofIz3W-KMH1uaBcrqAEh2G8-A; _gat=1; WEATHERCLOUD_RECENT_ED3C8=f6ca7a274ff0eed723ced7339a4024019b1d2680s%3A97%3A%226ef64e9a65d7df2b10dee00bf32d2d190a9a28aa%7B%22_devices%22%3A%22%7B%5C%225904597256%5C%22%3A1659038816%7D%22%2C%22_metars%22%3A%22%7B%7D%22%7D%22%3B',
'Referer': 'https://app.weathercloud.net/d5904597256',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest',
'sec-ch-ua': '".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
}
params = {
'code': '5904597256',
}
response = requests.get('https://app.weathercloud.net/device/values', params=params, cookies=cookies, headers=headers)
mjdm.setGlobal("ThisComputer.cur_temp", response.json()['temp'])
Спасибо, буду искать альтернативные варианты.fandaymon писал(а): ↑Чт июл 28, 2022 11:16 pm
Сайт заполняет значения при помощи js скрипта - обычным GET данные с него не получишь, на момент запроса их на странице просто нету
Можно извращаться с помощью питона
Добавить код в сценарий и вызывать сценарий с какой-то периодичностью, но будет работать строго пока токен WEATHERCLOUD_CSRF_TOKEN не протухнет. Обычно это час-два.Код: Выделить всё
import requests cookies = { 'PHPSESSID': 'f827955883fc9212d47fea2aed5a996e', 'WEATHERCLOUD_CSRF_TOKEN': 'ecaa6741b9cb21a665c36872da01f19a0b9c8a55s%3A88%3A%22MW1uTmQ1Yk5CfmNQNElIME1OWHZCU2lScGFZcHBpMHLtox5-6T8ZtQKfvzXtR2wk3VJIc35xZq2x9uCsDruxGA%3D%3D%22%3B', '_ga': 'GA1.2.1415913915.1659038309', '_gid': 'GA1.2.1003055442.1659038309', '__gads': 'ID=aa5d54ed2668e683-22dfc3d081d4003d:T=1659038309:RT=1659038309:S=ALNI_Ma88ofIz3W-KMH1uaBcrqAEh2G8-A', '_gat': '1', 'WEATHERCLOUD_RECENT_ED3C8': 'f6ca7a274ff0eed723ced7339a4024019b1d2680s%3A97%3A%226ef64e9a65d7df2b10dee00bf32d2d190a9a28aa%7B%22_devices%22%3A%22%7B%5C%225904597256%5C%22%3A1659038816%7D%22%2C%22_metars%22%3A%22%7B%7D%22%7D%22%3B', } headers = { 'Accept': 'application/json, text/javascript, */*; q=0.01', 'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7', 'Connection': 'keep-alive', # Requests sorts cookies= alphabetically # 'Cookie': 'PHPSESSID=f827955883fc9212d47fea2aed5a996e; WEATHERCLOUD_CSRF_TOKEN=ecaa6741b9cb21a665c36872da01f19a0b9c8a55s%3A88%3A%22MW1uTmQ1Yk5CfmNQNElIME1OWHZCU2lScGFZcHBpMHLtox5-6T8ZtQKfvzXtR2wk3VJIc35xZq2x9uCsDruxGA%3D%3D%22%3B; _ga=GA1.2.1415913915.1659038309; _gid=GA1.2.1003055442.1659038309; __gads=ID=aa5d54ed2668e683-22dfc3d081d4003d:T=1659038309:RT=1659038309:S=ALNI_Ma88ofIz3W-KMH1uaBcrqAEh2G8-A; _gat=1; WEATHERCLOUD_RECENT_ED3C8=f6ca7a274ff0eed723ced7339a4024019b1d2680s%3A97%3A%226ef64e9a65d7df2b10dee00bf32d2d190a9a28aa%7B%22_devices%22%3A%22%7B%5C%225904597256%5C%22%3A1659038816%7D%22%2C%22_metars%22%3A%22%7B%7D%22%7D%22%3B', 'Referer': 'https://app.weathercloud.net/d5904597256', 'Sec-Fetch-Dest': 'empty', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'same-origin', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36', 'X-Requested-With': 'XMLHttpRequest', 'sec-ch-ua': '".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', } params = { 'code': '5904597256', } response = requests.get('https://app.weathercloud.net/device/values', params=params, cookies=cookies, headers=headers) mjdm.setGlobal("ThisComputer.cur_temp", response.json()['temp'])
В принципе скрипт до сих пор информацию выдаёт, так что может они и не меняют токен так уж часто...
Код: Выделить всё
Многотарифный учёт.+?Ночная зона Т2<.+?d-table-num-left">(.+?)<\/div>
Код: Выделить всё
по трем зонам(?:.+?\n){1,}.*зона Т1(?:.+?\n){1,4}.+?(\d+,\d+)
Код: Выделить всё
трем зонам (?:.+?)зона Т1 (?:.+?)d-table-num-left">\n[[:blank:]]+(?:.+?)[[:blank:]]+<\/div(?:.+?)трем зонам (?:.+?)зона Т1 (?:.+?)d-table-num-left">\n[[:blank:]]+(.+?)[[:blank:]]+<\/div