1 (изменено: Michael, 2024-11-24 08:20:45)

Тема: AHK: Записать данные с JS скрипта в таблицу Excel

Всем доброго времени суток.

Делаю калькулятор под себя, для удобства. Есть сайт, с актуальными данными по доходности того или иного оборудования.

Нужные мне данные "Revenue" на монету "ETC", данные обновляются раз в 5-10 мин (страница https://hashrate.no/asics/ez100pro)

Получился небольшой JS скрипт, который получает нужные мне данные:

const blocks = document.querySelectorAll('.block.deviceLink');

const revenue = Array.from(blocks).reduce((acc, block) => {
  const tokenElement = block.querySelector('.deviceHeader2 span[style*="font-size: 14px;"]');
  const token = tokenElement ? tokenElement.textContent.trim() : null;

  const revenueRow = Array.from(block.querySelectorAll('td')).find(td => td.textContent.trim() === 'Revenue');
  const revenueAmount = revenueRow 
    ? revenueRow.parentElement.previousElementSibling.textContent.trim() 
    : null;

  if (token && revenueAmount) {
    acc[token] = revenueAmount;
  }

  return acc;
}, {});

console.log(revenue);
console.log(revenue['ETC']);

Возможно ли средствами AHK получаемые данные с JS скрипта внести в нужную ячейку Excel? Если да, то каким образом?

Заранее спасибо.

2

Re: AHK: Записать данные с JS скрипта в таблицу Excel

Не ясно, в чём именно вопрос: как получить данные из js скрипта (который непонятно, в какой среде работает), или как записать данные в Excel? Если собираетесь использовать AHK, то нет смысла разбивать на два скрипта, получить данные с сайта можно и силами AHK. С другой стороны, если используете Node.js для запуска js, то там есть библиотеки для работы с Excel.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: Michael, 2024-11-22 09:45:15)

Re: AHK: Записать данные с JS скрипта в таблицу Excel

teadrinker
Скрипт работает в консоли браузера (и firefox и chrome). Node.js не использовал. Мне нужен максимально простой вариант ввода данных со скрипта в ячейку Excel. Чтобы при этом браузер не открывался вообще.

Не знаю правильно ли выразился, условно нужно значение, получаемое скриптом вывести в ячейку таблицы excel средствами ahk без открытия браузера. Во, так вроде лучше

4

Re: AHK: Записать данные с JS скрипта в таблицу Excel

Так стало ещё более непонятно. Если не будете открывать браузер, как тогда в нём скрипт запустите?

Michael пишет:

значение, получаемое скриптом вывести в ячейку таблицы excel средствами ahk

Правильно ли я понял, что вы уже знаете, как передать значение из джаваскрипта в AHK-скрипт?
Хотя, как я уже упомянул, джаваскрипт в этой конструкции вообще лишний.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Записать данные с JS скрипта в таблицу Excel

Гуглите:

ComObjCreate("WinHttp.WinHttpRequest.5.1")
ComObjCreate("Excel.Application")

6

Re: AHK: Записать данные с JS скрипта в таблицу Excel

teadrinker пишет:

Если не будете открывать браузер, как тогда в нём скрипт запустите?

Хотелось бы средствами AHK без запуска браузера, горячая клавиша и ахк берет с нужного сайта текущее значение полученное JS.

teadrinker пишет:

Правильно ли я понял, что вы уже знаете, как передать значение из джаваскрипта в AHK-скрипт?

Не знаю... То есть вы предлагаете без JS полностью на AHK это реализовать?
Мне именно нужно без открытия браузера.

7

Re: AHK: Записать данные с JS скрипта в таблицу Excel

Malcev
Как вставить в excel примерно понятно:



book_name := "1.xlsx"

try
{   xl := ComObjActive("Excel.Application") 
	book := xl.Workbooks(book_name)

	MyVar := book.worksheets(1).Range("C4").Value
	MsgBox % MyVar
	book.worksheets(1).Range("C5").Value := "55555"
	MyVar := book.worksheets(1).Range("C5").Value
	MsgBox  % MyVar

	book.close(true)
	xl.quit
}
catch
	MsgBox, 262192, , % "Книга """ book_name """ не найдена!!"
ExitApp

А вот как  нужное значение с сайта получить через ahk не понимаю.

8

Re: AHK: Записать данные с JS скрипта в таблицу Excel

Michael пишет:

Хотелось бы средствами AHK без запуска браузера

Ну вот, как вам правильно указали, гуглите примеры использования ComObjCreate("WinHttp.WinHttpRequest.5.1"). Если не справитесь, пишите, в чём были сложности.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9 (изменено: Michael, 2024-11-24 08:21:17)

Re: AHK: Записать данные с JS скрипта в таблицу Excel

teadrinker

Пробую для теста просто получить все данные со страницы, там выводится начальная часть страницы (остальная думаю просто не помещается в окне)

url := "https://hashrate.no/asics/ez100pro"
whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
whr.Open("GET", url, true)
whr.Send()
whr.WaitForResponse(10)
msgbox, % whr.ResponseText

Посмотрел по коду странице в браузере, нужные мне данные в огромной строке по центру всего кода примерно:

</div></div></div></div><div class='w3-col l6 m6 s6'><div style='float: left;font-size: 12px;'><input class='checkBox' type='checkbox' value='1' checked='checked' name='nicehash' onchange='this.form.submit()'> NiceHash<br /></div></div></div><input type='hidden' name='action' value='filter'></form></div><div class='w3-row' style='margin: 15px 15px 0px 15px;'><div class='w3-col l3 m12 s12' style='padding-top: 0px;'><input style='margin-bottom: 3px;' type='text' id='searchInput' onkeyup='searchFilter()' placeholder='Search coins' title='Enter your search'></div><div class='w3-col l9' style='margin-top: 10px;'></div></div><div class='w3-col l12 m12 s12'><ul id='myUL'><li><div class='w3-col l12 m12 s12'><div class='block deviceLink'><a class='overlay' style='pointer-events: none;' href='/asics/ez100pro/ETC'><div style='display: none;'>ETC  Ethereum Classic  Etchash</div></a><div class='w3-row inner'><div class='w3-row'><div class='w3-col l3 m12 s12' style='padding: 10px;'><div class='w3-row w3-hide-medium w3-hide-small'><div style='float: left; width: 45px; height: 30px;text-align: center;font-size: 18px;'><img style='padding-right: 5px; width: 37px;' src='https://images.hashrate.no/0aae9d2c902c28038f3bb479f98a3399.png' /></div><div class='w3-rest'><div class='deviceHeader2'>Ethereum Classic <span style='color: #cccccc;font-size: 14px;'>ETC</span></div><div class='deviceInfo' style='line-height: 12px;text-align: left;'><table cellspacing='0' cellborder='0'><tr><td style='font-size: 10px;'>Algorithm</td><td class='white' style='font-size: 10px;'>Etchash</td></tr><tr><td style='font-size: 10px;'>Volume</td><td class='white' style='font-size: 10px;'>$107446320</td></tr><tr><td style='font-size: 10px;'>Emission</td><td class='white' style='font-size: 10px;'>$421643</td></tr><tr><td style='font-size: 10px;'>Est. ROI</td><td class='white' style='font-size: 10px;'>747 days</td></tr></table></div></div></div><div class='w3-row w3-hide-large'><div class='w3-row'><div class='w3-col m6 s6'><img style='padding-right: 5px; width: 37px;' src='https://images.hashrate.no/0aae9d2c902c28038f3bb479f98a3399.png' /><span class='deviceHeader2'>Ethereum Classic <span style='color: #cccccc;font-size: 14px;'>ETC</span></span></div><div class='w3-col m6 s6'><div class='deviceInfo' style='line-height: 12px;text-align: left;'><table cellspacing='0' cellborder='0'><tr><td style='font-size: 10px;'>Algorithm</td><td class='white' style='font-size: 10px;'>Etchash</td></tr><tr><td style='font-size: 10px;'>Volume</td><td class='white' style='font-size: 10px;'>$107446320</td></tr><tr><td style='font-size: 10px;'>Emission</td><td class='white' style='font-size: 10px;'>$421643</td></tr><tr><td style='font-size: 10px;'>Est. ROI</td><td class='white' style='font-size: 10px;'>747 days</td></tr></table></div></div></div></div></div><div class='w3-col l9 m12 s12' style='padding: 0px;'><div class='w3-col l6 m12 s12'><div class='w3-col l12 m12 s12 deviceData'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><table style='width: 100%;' cellpadding='0' cellspacing='0'><tr><td style='text-align: center;'>15.5 Gh/s</td><td style='text-align: center;'>5.00 Mh/s/W</td><td style='text-align: center;'>1.02 ETC<img style='padding-left: 5px;' src='https://images.hashrate.no/f5f6ea7e580849789f0e2d348c8ad21f.png' /></td></tr><tr><td style='font-size: 10px;color: #a7a7a7; width: 33%;text-align: center;'>Hashrate ETC</td><td style='font-size: 10px;color: #a7a7a7; width: 33%;text-align: center;'>Efficiency ETC</td><td style='font-size: 10px;color: #a7a7a7; width: 33%;text-align: center;'>Yield ETC</td></tr></table></div></div></div><div class='w3-col l6 m12 s12'><div class='w3-col l3 m3 s3 deviceData' style='height: 95px;'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><center><table cellpadding='0' cellspacing='0'><tr><td>3100 w</td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Power</td></tr><tr><td style='padding-top: 10px;'>74.4 kWh</td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Power 24h</td></tr></table></center></div></div><div class='w3-col l3 m3 s3 deviceData' style='height: 95px;'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><center><table cellpadding='0' cellspacing='0'><tr><td>0.41 $/kWh</td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Revenue/kWh</td></tr><tr><td style='padding-top: 10px;'>0.41 $/kWh</td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Rev. 24h/kWh</td></tr></table></center></div></div><div class='w3-col l3 m3 s3 deviceData' style='height: 95px;'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><center><table cellpadding='0' cellspacing='0'><tr><td>$30.53 <img style='padding-left: 5px;' src='https://images.hashrate.no/5366ef4b6491cf6597e65150ff15b56b.png' /></td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Revenue</td></tr><tr><td style='padding-top: 10px;'>$30.38 </td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Rev 24h</td></tr></table></center></div></div><div class='w3-col l3 m3 s3 deviceDataSelected' style='height: 95px;'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><center><table cellpadding='0' cellspacing='0'><tr><td style='font-weight: bold;'>$26.07 </td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Profit</td></tr><tr><td style='padding-top: 10px;'>$25.91 </td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Profit 24h</td></tr></table></center></div></div></div></div></div></div></a></div></div></li><li><div class='w3-col l12 m12 s12'><div class='block deviceLink'><a class='overlay' style='pointer-events: none;' href='/asics/ez100pro/BTN'><div style='display: none;'>BTN  Bitnet BTN  Ethash</div></a><div class='w3-row inner'><div class='w3-row'><div class='w3-col l3 m12 s12' style='padding: 10px;'><div class='w3-row w3-hide-medium w3-hide-small'><div style='float: left; width: 45px; height: 30px;text-align: center;font-size: 18px;'><img style='padding-right: 5px; width: 37px;' src='https://images.hashrate.no/b38690e32888b0d4d6c51afed2d53c22.png' /></div><div class='w3-rest'><div class='deviceHeader2'>Bitnet BTN <span style='color: #cccccc;font-size: 14px;'>BTN</span></div><div class='deviceInfo' style='line-height: 12px;text-align: left;'><table cellspacing='0' cellborder='0'><tr><td style='font-size: 10px;'>Algorithm</td><td class='white' style='font-size: 10px;'>Ethash</td></tr><tr><td style='font-size: 10px;'>Volume</td><td class='white' style='font-size: 10px;'>$943.0<img style='padding-left: 5px;max-height: 10px;' src='https://images.hashrate.no/1e67a053dde961b3402ad5b9ea368c75.png' /></td></tr><tr><td style='font-size: 10px;'>Emission</td><td class='white' style='font-size: 10px;'>$667.5<img style='padding-left: 5px;max-height: 10px;' src='https://images.hashrate.no/adb708f85648f244fa79b84885098634.png' /></td></tr><tr><td style='font-size: 10px;'>Est. ROI</td><td class='white' style='font-size: 10px;'>829 days</td></tr></table></div></div></div><div class='w3-row w3-hide-large'><div class='w3-row'><div class='w3-col m6 s6'><img style='padding-right: 5px; width: 37px;' src='https://images.hashrate.no/b38690e32888b0d4d6c51afed2d53c22.png' /><span class='deviceHeader2'>Bitnet BTN <span style='color: #cccccc;font-size: 14px;'>BTN</span></span></div><div class='w3-col m6 s6'><div class='deviceInfo' style='line-height: 12px;text-align: left;'><table cellspacing='0' cellborder='0'><tr><td style='font-size: 10px;'>Algorithm</td><td class='white' style='font-size: 10px;'>Ethash</td></tr><tr><td style='font-size: 10px;'>Volume</td><td class='white' style='font-size: 10px;'>$943.0<img style='padding-left: 5px;max-height: 10px;' src='https://images.hashrate.no/1e67a053dde961b3402ad5b9ea368c75.png' /></td></tr><tr><td style='font-size: 10px;'>Emission</td><td class='white' style='font-size: 10px;'>$667.5<img style='padding-left: 5px;max-height: 10px;' src='https://images.hashrate.no/adb708f85648f244fa79b84885098634.png' /></td></tr><tr><td style='font-size: 10px;'>Est. ROI</td><td class='white' style='font-size: 10px;'>829 days</td></tr></table></div></div></div></div></div><div class='w3-col l9 m12 s12' style='padding: 0px;'><div class='w3-col l6 m12 s12'><div class='w3-col l12 m12 s12 deviceData'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><table style='width: 100%;' cellpadding='0' cellspacing='0'><tr><td style='text-align: center;'>15.5 Gh/s</td><td style='text-align: center;'>5.00 Mh/s/W</td><td style='text-align: center;'>283.9 BTN<img style='padding-left: 5px;' src='https://images.hashrate.no/5366ef4b6491cf6597e65150ff15b56b.png' /></td></tr><tr><td style='font-size: 10px;color: #a7a7a7; width: 33%;text-align: center;'>Hashrate BTN</td><td style='font-size: 10px;color: #a7a7a7; width: 33%;text-align: center;'>Efficiency BTN</td><td style='font-size: 10px;color: #a7a7a7; width: 33%;text-align: center;'>Yield BTN</td></tr></table></div></div></div><div class='w3-col l6 m12 s12'><div class='w3-col l3 m3 s3 deviceData' style='height: 95px;'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><center><table cellpadding='0' cellspacing='0'><tr><td>3100 w</td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Power</td></tr><tr><td style='padding-top: 10px;'>74.4 kWh</td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Power 24h</td></tr></table></center></div></div><div class='w3-col l3 m3 s3 deviceData' style='height: 95px;'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><center><table cellpadding='0' cellspacing='0'><tr><td>0.39 $/kWh</td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Revenue/kWh</td></tr><tr><td style='padding-top: 10px;'>0.37 $/kWh</td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Rev. 24h/kWh</td></tr></table></center></div></div><div class='w3-col l3 m3 s3 deviceData' style='height: 95px;'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><center><table cellpadding='0' cellspacing='0'><tr><td>$28.67 <img style='padding-left: 5px;' src='https://images.hashrate.no/5366ef4b6491cf6597e65150ff15b56b.png' /></td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Revenue</td></tr><tr><td style='padding-top: 10px;'>$27.80 </td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Rev 24h</td></tr></table></center></div></div><div class='w3-col l3 m3 s3 deviceDataSelected' style='height: 95px;'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><center><table cellpadding='0' cellspacing='0'><tr><td style='font-weight: bold;'>$24.21 </td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Profit</td></tr><tr><td style='padding-top: 10px;'>$23.34 </td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Profit 24h</td></tr></table></center></div></div></div></div></div></div></a></div></div></li><li><div class='w3-col l12 m12 s12'><div class='block deviceLink'><a class='overlay' style='pointer-events: none;' href='/asics/ez100pro/OCTA'><div style='display: none;'>OCTA  OctaSpace  Ethash</div></a><div class='w3-row inner'><div class='w3-row'><div class='w3-col l3 m12 s12' style='padding: 10px;'><div class='w3-row w3-hide-medium w3-hide-small'><div style='float: left; width: 45px; height: 30px;text-align: center;font-size: 18px;'><img style='padding-right: 5px; width: 37px;' src='https://images.hashrate.no/194a5d71051334b1d3209faa16bc3ad4.png' /></div><div class='w3-rest'><div class='deviceHeader2'>OctaSpace <span style='color: #cccccc;font-size: 14px;'>OCTA</span></div><div class='deviceInfo' style='line-height: 12px;text-align: left;'><table cellspacing='0' cellborder='0'><tr><td style='font-size: 10px;'>Algorithm</td><td class='white' style='font-size: 10px;'>Ethash</td></tr><tr><td style='font-size: 10px;'>Volume</td><td class='white' style='font-size: 10px;'>$180181</td></tr><tr><td style='font-size: 10px;'>Emission</td><td class='white' style='font-size: 10px;'>$16736</td></tr><tr><td style='font-size: 10px;'>Est. ROI</td><td class='white' style='font-size: 10px;'>834 days</td></tr></table></div></div></div><div class='w3-row w3-hide-large'><div class='w3-row'><div class='w3-col m6 s6'><img style='padding-right: 5px; width: 37px;' src='https://images.hashrate.no/194a5d71051334b1d3209faa16bc3ad4.png' /><span class='deviceHeader2'>OctaSpace <span style='color: #cccccc;font-size: 14px;'>OCTA</span></span></div><div class='w3-col m6 s6'><div class='deviceInfo' style='line-height: 12px;text-align: left;'><table cellspacing='0' cellborder='0'><tr><td style='font-size: 10px;'>Algorithm</td><td class='white' style='font-size: 10px;'>Ethash</td></tr><tr><td style='font-size: 10px;'>Volume</td><td class='white' style='font-size: 10px;'>$180181</td></tr><tr><td style='font-size: 10px;'>Emission</td><td class='white' style='font-size: 10px;'>$16736</td></tr><tr><td style='font-size: 10px;'>Est. ROI</td><td class='white' style='font-size: 10px;'>834 days</td></tr></table></div></div></div></div></div><div class='w3-col l9 m12 s12' style='padding: 0px;'><div class='w3-col l6 m12 s12'><div class='w3-col l12 m12 s12 deviceData'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><table style='width: 100%;' cellpadding='0' cellspacing='0'><tr><td style='text-align: center;'>15.5 Gh/s</td><td style='text-align: center;'>5.00 Mh/s/W</td><td style='text-align: center;'>20.65 OCTA<img style='padding-left: 5px;' src='https://images.hashrate.no/f5f6ea7e580849789f0e2d348c8ad21f.png' /></td></tr><tr><td style='font-size: 10px;color: #a7a7a7; width: 33%;text-align: center;'>Hashrate OCTA</td><td style='font-size: 10px;color: #a7a7a7; width: 33%;text-align: center;'>Efficiency OCTA</td><td style='font-size: 10px;color: #a7a7a7; width: 33%;text-align: center;'>Yield OCTA</td></tr></table></div></div></div><div class='w3-col l6 m12 s12'><div class='w3-col l3 m3 s3 deviceData' style='height: 95px;'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><center><table cellpadding='0' cellspacing='0'><tr><td>3100 w</td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Power</td></tr><tr><td style='padding-top: 10px;'>74.4 kWh</td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Power 24h</td></tr></table></center></div></div><div class='w3-col l3 m3 s3 deviceData' style='height: 95px;'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><center><table cellpadding='0' cellspacing='0'><tr><td>0.38 $/kWh</td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Revenue/kWh</td></tr><tr><td style='padding-top: 10px;'>0.37 $/kWh</td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Rev. 24h/kWh</td></tr></table></center></div></div><div class='w3-col l3 m3 s3 deviceData' style='height: 95px;'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><center><table cellpadding='0' cellspacing='0'><tr><td>$28.09 <img style='padding-left: 5px;' src='https://images.hashrate.no/5366ef4b6491cf6597e65150ff15b56b.png' /></td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Revenue</td></tr><tr><td style='padding-top: 10px;'>$27.68 </td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Rev 24h</td></tr></table></center></div></div><div class='w3-col l3 m3 s3 deviceDataSelected' style='height: 95px;'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><center><table cellpadding='0' cellspacing='0'><tr><td style='font-weight: bold;'>$23.62 </td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Profit</td></tr><tr><td style='padding-top: 10px;'>$23.21 </td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Profit 24h</td></tr></table></center></div></div></div></div></div></div></a></div></div></li><li><div class='w3-col l12 m12 s12'><div class='block deviceLink'><a class='overlay' style='pointer-events: none;' href='/asics/ez100pro/LRS'><div style='display: none;'>LRS  Larissa  Ethash</div></a><div class='w3-row inner'><div class='w3-row'><div class='w3-col l3 m12 s12' style='padding: 10px;'><div class='w3-row w3-hide-medium w3-hide-small'><div style='float: left; width: 45px; height: 30px;text-align: center;font-size: 18px;'><img style='padding-right: 5px; width: 37px;' src='https://images.hashrate.no/859136cdd7a0528bf3837ff9d7b30bbf.png' /></div><div class='w3-rest'><div class='deviceHeader2'>Larissa <span style='color: #cccccc;font-size: 14px;'>LRS</span></div><div class='deviceInfo' style='line-height: 12px;text-align: left;'><table cellspacing='0' cellborder='0'><tr><td style='font-size: 10px;'>Algorithm</td><td class='white' style='font-size: 10px;'>Ethash</td></tr><tr><td style='font-size: 10px;'>Volume</td><td class='white' style='font-size: 10px;'>$25989</td></tr><tr><td style='font-size: 10px;'>Emission</td><td class='white' style='font-size: 10px;'>$763.5<img style='padding-left: 5px;max-height: 10px;' src='https://images.hashrate.no/adb708f85648f244fa79b84885098634.png' /></td></tr><tr><td style='font-size: 10px;'>Est. ROI</td><td class='white' style='font-size: 10px;'>882 days</td></tr></table></div></div></div><div class='w3-row w3-hide-large'><div class='w3-row'><div class='w3-col m6 s6'><img style='padding-right: 5px; width: 37px;' src='https://images.hashrate.no/859136cdd7a0528bf3837ff9d7b30bbf.png' /><span class='deviceHeader2'>Larissa <span style='color: #cccccc;font-size: 14px;'>LRS</span></span></div><div class='w3-col m6 s6'><div class='deviceInfo' style='line-height: 12px;text-align: left;'><table cellspacing='0' cellborder='0'><tr><td style='font-size: 10px;'>Algorithm</td><td class='white' style='font-size: 10px;'>Ethash</td></tr><tr><td style='font-size: 10px;'>Volume</td><td class='white' style='font-size: 10px;'>$25989</td></tr><tr><td style='font-size: 10px;'>Emission</td><td class='white' style='font-size: 10px;'>$763.5<img style='padding-left: 5px;max-height: 10px;' src='https://images.hashrate.no/adb708f85648f244fa79b84885098634.png' /></td></tr><tr><td style='font-size: 10px;'>Est. ROI</td><td class='white' style='font-size: 10px;'>882 days</td></tr></table></div></div></div></div></div><div class='w3-col l9 m12 s12' style='padding: 0px;'><div class='w3-col l6 m12 s12'><div class='w3-col l12 m12 s12 deviceData'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><table style='width: 100%;' cellpadding='0' cellspacing='0'><tr><td style='text-align: center;'>15.5 Gh/s</td><td style='text-align: center;'>5.00 Mh/s/W</td><td style='text-align: center;'>744.9 LRS<img style='padding-left: 5px;' src='https://images.hashrate.no/5366ef4b6491cf6597e65150ff15b56b.png' /></td></tr><tr><td style='font-size: 10px;color: #a7a7a7; width: 33%;text-align: center;'>Hashrate LRS</td><td style='font-size: 10px;color: #a7a7a7; width: 33%;text-align: center;'>Efficiency LRS</td><td style='font-size: 10px;color: #a7a7a7; width: 33%;text-align: center;'>Yield LRS</td></tr></table></div></div></div><div class='w3-col l6 m12 s12'><div class='w3-col l3 m3 s3 deviceData' style='height: 95px;'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><center><table cellpadding='0' cellspacing='0'><tr><td>3100 w</td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Power</td></tr><tr><td style='padding-top: 10px;'>74.4 kWh</td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Power 24h</td></tr></table></center></div></div><div class='w3-col l3 m3 s3 deviceData' style='height: 95px;'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><center><table cellpadding='0' cellspacing='0'><tr><td>0.36 $/kWh</td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Revenue/kWh</td></tr><tr><td style='padding-top: 10px;'>0.35 $/kWh</td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Rev. 24h/kWh</td></tr></table></center></div></div><div class='w3-col l3 m3 s3 deviceData' style='height: 95px;'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><center><table cellpadding='0' cellspacing='0'><tr><td>$26.52 <img style='padding-left: 5px;' src='https://images.hashrate.no/5366ef4b6491cf6597e65150ff15b56b.png' /></td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Revenue</td></tr><tr><td style='padding-top: 10px;'>$26.39 </td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Rev 24h</td></tr></table></center></div></div><div class='w3-col l3 m3 s3 deviceDataSelected' style='height: 95px;'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><center><table cellpadding='0' cellspacing='0'><tr><td style='font-weight: bold;'>$22.06 </td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Profit</td></tr><tr><td style='padding-top: 10px;'>$21.93 </td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Profit 24h</td></tr></table></center></div></div></div></div></div></div></a></div></div></li><li><div class='w3-col l12 m12 s12'><div class='block deviceLink'><a class='overlay' style='pointer-events: none;' href='/asics/ez100pro/NH-Etchash'><div style='display: none;'>NH-Etchash  NiceHash Etchash  Etchash</div></a><div class='w3-row inner'><div class='w3-row'><div class='w3-col l3 m12 s12' style='padding: 10px;'><div class='w3-row w3-hide-medium w3-hide-small'><div style='float: left; width: 45px; height: 30px;text-align: center;font-size: 18px;'><img style='padding-right: 5px; width: 37px;' src='https://images.hashrate.no/fb085a405305f051233216e378eb483a.png' /></div><div class='w3-rest'><div class='deviceHeader2'>NiceHash Etchash <span style='color: #cccccc;font-size: 14px;'>NH-Etchash</span></div><div class='deviceInfo' style='line-height: 12px;text-align: left;'><table cellspacing='0' cellborder='0'><tr><td style='font-size: 10px;'>Algorithm</td><td class='white' style='font-size: 10px;'>Etchash</td></tr></table></div></div></div><div class='w3-row w3-hide-large'><div class='w3-row'><div class='w3-col m6 s6'><img style='padding-right: 5px; width: 37px;' src='https://images.hashrate.no/fb085a405305f051233216e378eb483a.png' /><span class='deviceHeader2'>NiceHash Etchash <span style='color: #cccccc;font-size: 14px;'>NH-Etchash</span></span></div><div class='w3-col m6 s6'><div class='deviceInfo' style='line-height: 12px;text-align: left;'><table cellspacing='0' cellborder='0'><tr><td style='font-size: 10px;'>Algorithm</td><td class='white' style='font-size: 10px;'>Etchash</td></tr></table></div></div></div></div></div><div class='w3-col l9 m12 s12' style='padding: 0px;'><div class='w3-col l6 m12 s12'><div class='w3-col l12 m12 s12 deviceData'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><table style='width: 100%;' cellpadding='0' cellspacing='0'><tr><td style='text-align: center;'>15.5 Gh/s</td><td style='text-align: center;'>5.00 Mh/s/W</td><td style='text-align: center;'>0.239 mBTC</td></tr><tr><td style='font-size: 10px;color: #a7a7a7; width: 33%;text-align: center;'>Hashrate NH-Etchash</td><td style='font-size: 10px;color: #a7a7a7; width: 33%;text-align: center;'>Efficiency NH-Etchash</td><td style='font-size: 10px;color: #a7a7a7; width: 33%;text-align: center;'>Yield NH-Etchash</td></tr></table></div></div></div><div class='w3-col l6 m12 s12'><div class='w3-col l3 m3 s3 deviceData' style='height: 95px;'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><center><table cellpadding='0' cellspacing='0'><tr><td>3100 w</td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Power</td></tr><tr><td style='padding-top: 10px;'>74.4 kWh</td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Power 24h</td></tr></table></center></div></div><div class='w3-col l3 m3 s3 deviceData' style='height: 95px;'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><center><table cellpadding='0' cellspacing='0'><tr><td>0.32 $/kWh</td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Revenue/kWh</td></tr><tr><td style='padding-top: 10px;'>0.15 $/kWh</td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Rev. 24h/kWh</td></tr></table></center></div></div><div class='w3-col l3 m3 s3 deviceData' style='height: 95px;'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><center><table cellpadding='0' cellspacing='0'><tr><td>$23.95 <img style='padding-left: 5px;' src='https://images.hashrate.no/5366ef4b6491cf6597e65150ff15b56b.png' /></td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Revenue</td></tr><tr><td style='padding-top: 10px;'>$11.19 </td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Rev 24h</td></tr></table></center></div></div><div class='w3-col l3 m3 s3 deviceDataSelected' style='height: 95px;'><div style='line-height: 1;overflow: hidden;padding-top: 5px;'><center><table cellpadding='0' cellspacing='0'><tr><td style='font-weight: bold;'>$19.48 </td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Profit</td></tr><tr><td style='padding-top: 10px;'>$6.73 </td></tr><tr><td style='font-size: 10px;color: #a7a7a7;'>Profit 24h</td></tr></table></center></div></div></div></div></div></div></a></div></div></li></ul>

На странице (https://hashrate.no/asics/ez100pro) оно выглядит так:

https://i.postimg.cc/Zq2s576Q/image.png

Из этого кода мне надо вытащить $30.53, во первых тут каждый раз меняется сама сумма, во вторых периодически меняется в позиция в таблице на сайте для нужной монеты. Как именно искать то, то что постоянно меняется я не представляю. Сам текст ($30.53) окружен тегами, и в строке выглядит так <tr><td>$30.53 <img, но на сайте куча других значений  окруженных такими же ближайшими тегами до и после.

UPDATE:
Как примерно найти именно нужное значение я понял.
Сначало нужно найти Yield ETC. Оно будет единственным на всей странице.
Далее от него найти третье совпадение по строке cellpadding='0' cellspacing='0'><tr><td>XXXX где XXXX именно по третьему совпадению будет нужным мне значением.
Только вот как это реализовать, и возможно ли вообще, не представляю...

10

Re: AHK: Записать данные с JS скрипта в таблицу Excel

Либо через регулярные выражения, либо через ComObjCreate("HTMLFile").

11 (изменено: Michael, 2024-11-23 16:11:11)

Re: AHK: Записать данные с JS скрипта в таблицу Excel

Malcev пишет:

либо через ComObjCreate("HTMLFile")

Если я правильно понимаю, то он будет сохранять отдельным файлом всю страницу? А если страниц будет 5 и более, это не совсем удобно.

Malcev пишет:

Либо через регулярные выражения

Имеете ввиду RegExMatch?

Вот к примеру если через HTMLFile, получается так:

document := ComObjCreate("HTMLfile")
document.Open()
document.write()
document.write(html)
document.Close()

msgbox % document.getElementById("CloseCoinzillaSticky").innerText

Но как я сюда помещу весь JS для получения значения нужного?

Ведь для его получения нужно

const blocks = document.querySelectorAll('.block.deviceLink');

const revenue = Array.from(blocks).reduce((acc, block) => {
  const tokenElement = block.querySelector('.deviceHeader2 span[style*="font-size: 14px;"]');
  const token = tokenElement ? tokenElement.textContent.trim() : null;

  const revenueRow = Array.from(block.querySelectorAll('td')).find(td => td.textContent.trim() === 'Revenue');
  const revenueAmount = revenueRow 
    ? revenueRow.parentElement.previousElementSibling.textContent.trim() 
    : null;

  if (token && revenueAmount) {
    acc[token] = revenueAmount;
  }

  return acc;
}, {});

console.log(revenue);
console.log(revenue['ETC']);

Или есть какой-то иной способ вытащить нужное значение без этого js скрипта?

12 (изменено: Malcev, 2024-11-23 22:21:14)

Re: AHK: Записать данные с JS скрипта в таблицу Excel

regexmatch(html, "si)>Yield ETC<.+?<td>(\$.+?) ", match)
msgbox % match1

13 (изменено: Michael, 2024-11-24 06:27:21)

Re: AHK: Записать данные с JS скрипта в таблицу Excel

Malcev
Получилось! Большое спасибо!
Не подскажите еще как можно убрать символ "$" из получаемого значения перед отправкой его в excel?
И правильно ли я делаю если страниц несколько, просто дублирую код меняю ссылку и ячейку? (это работает корректно)

link := "https://hashrate.no/asics/ez100pro"
req := ComObjCreate("MSXML2.XMLHTTP.6.0")
req.Open("GET", link)
req.Send()
html := req.responseText

document := ComObjCreate("HTMLfile")
document.Open()
document.write()
document.write(html)
document.Close()

regexmatch(html, "si)>Yield ETC<.+?<td>(\$.+?) ", match)

book_name := "1.xlsx"

try
{   xl := ComObjActive("Excel.Application")
	book := xl.Workbooks(book_name)

	book.worksheets(1).Range("C4").Value := match1
	MyVar := book.worksheets(1).Range("C4").Value
}
catch
	MsgBox, 262192, , % "Книга """ book_name """ не найдена!!"

link := "https://hashrate.no/asics/x16p"
req := ComObjCreate("MSXML2.XMLHTTP.6.0")
req.Open("GET", link)
req.Send()
html := req.responseText

document := ComObjCreate("HTMLfile")
document.Open()
document.write()
document.write(html)
document.Close()

regexmatch(html, "si)>Yield ETC<.+?<td>(\$.+?) ", match)

book_name := "1.xlsx"

try
{   xl := ComObjActive("Excel.Application")
	book := xl.Workbooks(book_name)

	book.worksheets(1).Range("C5").Value := match1
	MyVar := book.worksheets(1).Range("C5").Value
}
catch
	MsgBox, 262192, , % "Книга """ book_name """ не найдена!!"
ExitApp

Update:
Получилось удалить символ $ из значения:


link := "https://hashrate.no/asics/ez100pro"
req := ComObjCreate("MSXML2.XMLHTTP.6.0")
req.Open("GET", link)
req.Send()
html := req.responseText

document := ComObjCreate("HTMLfile")
document.Open()
document.write()
document.write(html)
document.Close()

regexmatch(html, "si)>Yield ETC<.+?<td>(\$.+?) ", match)
str1 := RegExReplace(match1, "\$*")

MsgBox % str1

ExitApp

Но не получается в основном скрипте, выдает совершенно другие цифры:

link := "https://hashrate.no/asics/x16p"
req := ComObjCreate("MSXML2.XMLHTTP.6.0")
req.Open("GET", link)
req.Send()
html := req.responseText

document := ComObjCreate("HTMLfile")
document.Open()
document.write()
document.write(html)
document.Close()

regexmatch(html, "si)>Yield ETC<.+?<td>(\$.+?) ", match)
str2 := RegExReplace(match1, "\$*")

book_name := "1.xlsx"

try
{   xl := ComObjActive("Excel.Application")
	book := xl.Workbooks(book_name)

	book.worksheets(1).Range("C5").Value := str2
	MyVar := book.worksheets(1).Range("C5").Value
    book.save
}
catch
	MsgBox, 262192, , % "Книга """ book_name """ не найдена!!"

ExitApp

14 (изменено: Michael, 2024-11-24 06:26:52)

Re: AHK: Записать данные с JS скрипта в таблицу Excel

Так. Мозг кипит.

Подытожу: мне удалось получить и преобразовать значение но нужного мне формата средствами AHK:

(Теперь он не только удаляет "$" перед цифрами, но и меняет точку на запятую, чтобы Excel мог работать с формулами).

link := "https://hashrate.no/asics/ez100pro"
req := ComObjCreate("MSXML2.XMLHTTP.6.0")
req.Open("GET", link)
req.Send()
html := req.responseText

document := ComObjCreate("HTMLfile")
document.Open()
document.write()
document.write(html)
document.Close()

book_name := "1.xlsx"

myVar1 := regexmatch(html, "si)>Yield ETC<.+?<td>(\$.+?) ", match)
myVar2 := RegExReplace(match1, "\$")
myVar3 := RegExReplace(myVar2, "i)\.", ",")
myVar4 := myVar3

try
{   xl1 := ComObjActive("Excel.Application")
	book1 := xl1.Workbooks(book_name)
	book1.worksheets(1).Range("C4").Value := myVar4
}
catch
ExitApp

Вопрос: если страниц сайта несколько, а не одна как в примере выше, как правильнее это дело прописать? У меня не выходит... Работает только на 1 страницу.

15

Re: AHK: Записать данные с JS скрипта в таблицу Excel

Michael
Верните, пожалуйста, точки на их места. Смайлик точку не заменяет.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

16

Re: AHK: Записать данные с JS скрипта в таблицу Excel

teadrinker
Поправил, извиняюсь. Не могли бы подсказать куда копать по последнему вопросу в предыдущем моем сообщении?

17

Re: AHK: Записать данные с JS скрипта в таблицу Excel

Приведите ссылку с несколькими страницами. Заодно посмотрите, как ссылки оформлять.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

18 (изменено: Michael, 2024-11-24 08:36:55)

Re: AHK: Записать данные с JS скрипта в таблицу Excel

teadrinker
Ссылки поправил в своих постах.

Я наверное некорректно выразился, ни 1 ссылка с несколькими страницами, а 3 ссылки, но сайт один и тот же.

URL 1: https://hashrate.no/asics/ez100pro
URL 2: https://hashrate.no/asics/x16p
URL 3: https://hashrate.no/asics/L7

Для примера 3 штуки, но фактически их будет больше 20.

Алгоритм получение данных везде одинаковый, кроме одного но: "Yield ETC", меняется на "Yield DOGE".

Соответственно для получение значения на 1 и 2 ссылках нужно:

regexmatch(html, "si)>Yield ETC<.+?<td>(\$.+?) ", match)

А для третьей ссылки нужно:

regexmatch(html, "si)>Yield DOGE<.+?<td>(\$.+?) ", match)

Также для каждого полученного значения с каждой ссылки нужна одинаковая обработка средствами RegExReplace, которую я писал выше:

RegExReplace(match1, "\$")
RegExReplace(myVar2, "i)\.", ",")

19 (изменено: Michael, 2024-11-24 10:34:15)

Re: AHK: Записать данные с JS скрипта в таблицу Excel

Разобрался сам, не знаю, насколько это колхозно, но работает на отлично.

SetWorkingDir %A_ScriptDir%
;URL1---------------------------------------------------------------

link := "https://hashrate.no/asics/ez100pro"
req := ComObjCreate("WinHttp.WinHttpRequest.5.1")
req.Open("GET", link)
req.Send()
html := req.responseText

book_name := "ASICS.xlsx"

myVar1 := regexmatch(html, "si)>Yield ETC<.+?<td>(\$.+?) ", match)
myVar2 := RegExReplace(match1, "\$")
myVar3 := RegExReplace(myVar2, "i)\.", ",")

	xl1 := ComObjActive("Excel.Application")
	book1 := xl1.Workbooks(book_name)
	book1.worksheets(1).Range("G3").Value := myVar3


;URL2---------------------------------------------------------------

link := "https://hashrate.no/asics/L9"
req := ComObjCreate("WinHttp.WinHttpRequest.5.1")
req.Open("GET", link)
req.Send()
html := req.responseText

book_name := "ASICS.xlsx"

myVar1 := regexmatch(html, "si)>Yield DOGE<.+?<td>(\$.+?) ", match)
myVar2 := RegExReplace(match1, "\$")
myVar3 := RegExReplace(myVar2, "i)\.", ",")

	xl1 := ComObjActive("Excel.Application")
	book1 := xl1.Workbooks(book_name)
	book1.worksheets(1).Range("G15").Value := myVar3

ExitApp

20

Re: AHK: Записать данные с JS скрипта в таблицу Excel

Не нужно каждый раз заново COM-объекты создавать.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder