Files
004_comission/armandarmand/task1/task1-ticket1/helloworld/browser/hello-etnet/FetchAaStock.bas
louiscklaw ce9a4aa9b3 update,
2025-01-31 19:27:58 +08:00

94 lines
4.7 KiB
QBasic

Attribute VB_Name = "FetchAaStock"
Function run(stock_num As Integer)
' On Error GoTo eh
Dim fetch_result(0 To 22) As String
Dim driver As New ChromeDriver
driver.SetBinary ChromiumBinaryPath
driver.AddArgument "--disable-blink-features=AutomationControlled"
driver.Start
' ' driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
' ' driver.ExecuteScript "alert('helloworld')"
driver.ExecuteScript "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
' ' driver.Get "http://localhost:8080/navigator_webdriver_test.html"
' ' https://intoli.com/blog/not-possible-to-block-chrome-headless/chrome-headless-test.html
' driver.Get "https://intoli.com/blog/not-possible-to-block-chrome-headless/chrome-headless-test.html"
' driver.ExecuteScript "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
driver.Get "http://www.aastocks.com"
' driver.ExecuteScript "console.log('hello excel')"
driver.ExecuteScript "document.querySelector('#sb-txtSymbol-aa').value = '" & stock_num & "'"
driver.ExecuteScript "document.querySelector('#sb-btnSubmit').click()"
driver.ExecuteScript "document.querySelectorAll('span.float_l')[6].click()"
Debug.Print driver.ExecuteScript("{ return 'helloworld from chrome' }")
' stock_Name # Name
fetch_result(IDX_STOCK_NAME) = driver.ExecuteScript("{ return document.querySelector('#SQ_Name').textContent.trim() }")
' stock_Price # Price
fetch_result(IDX_STOCK_PRICE) = driver.ExecuteScript("{ return document.querySelector('#labelLast').textContent.trim() }")
' 10_day_Moving_Average # 10????
fetch_result(IDX_10_DAY_MOVING_AVERAGE) = driver.ExecuteScript("{ return document.querySelectorAll('.content.comm-panel.dq-panel')[1].querySelectorAll('tr')[1].querySelectorAll('td')[1].textContent.trim() }")
' 20_day_Moving_Average # 20????
fetch_result(IDX_20_DAY_MOVING_AVERAGE) = "20_day_Moving_Average missing"
' 50_day_Moving_Average # 50????
fetch_result(IDX_50_DAY_MOVING_AVERAGE) = driver.ExecuteScript("{ return document.querySelectorAll('.content.comm-panel.dq-panel')[1].querySelectorAll('tr')[2].querySelectorAll('td')[1].textContent.trim() }")
' 100_day_Moving_Average # 100????
fetch_result(IDX_100_DAY_MOVING_AVERAGE) = driver.ExecuteScript("{ return document.querySelectorAll('.content.comm-panel.dq-panel')[1].querySelectorAll('tr')[3].querySelectorAll('td')[1].textContent.trim() }")
' 250_day_Moving_Average # 250????
fetch_result(IDX_250_DAY_MOVING_AVERAGE) = driver.ExecuteScript("{ return document.querySelectorAll('.content.comm-panel.dq-panel')[1].querySelectorAll('tr')[4].querySelectorAll('td')[1].textContent.trim() }")
' P_E_Ratio_Expected # ???/??
fetch_result(IDX_P_E_RATIO_EXPECTED) = driver.ExecuteScript("{ return document.querySelectorAll('#tbPERatio div')[5].textContent.trim() }")
' Yield # ???
fetch_result(IDX_YIELD) = driver.ExecuteScript("{ return document.querySelectorAll('.quote-box div')[19].textContent.trim() }")
' Fund_Flow # ????
fetch_result(IDX_FUND_FLOW) = driver.ExecuteScript("{ return document.querySelectorAll('.quote-box div')[29].textContent.trim() }")
' Short_Selling_Amount_Ratio_% # ???_??(%)
fetch_result(IDX_SHORT_SELLING_AMOUNT_RATIO_) = driver.ExecuteScript("{ return document.querySelectorAll('.quote-box div')[4].textContent.trim() }")
' RSI_10 # RSI 10
fetch_result(IDX_RSI_10) = driver.ExecuteScript("{ return document.querySelectorAll('.content.comm-panel')[7].querySelectorAll('table')[0].querySelectorAll('tr')[0].querySelector('.txt_r').textContent.trim() }")
' RSI_14 # RSI 14
fetch_result(IDX_RSI_14) = driver.ExecuteScript("{ return document.querySelectorAll('.content.comm-panel')[7].querySelectorAll('table')[0].querySelectorAll('tr')[1].querySelector('.txt_r').textContent.trim() }")
' RSI_20 # RSI 20
fetch_result(IDX_RSI_20) = driver.ExecuteScript("{ return document.querySelectorAll('.content.comm-panel')[7].querySelectorAll('table')[0].querySelectorAll('tr')[2].querySelector('.txt_r').textContent.trim() }")
' MACD_8_17_days # MACD(8_17 ?)
fetch_result(IDX_MACD_8_17_DAYS) = driver.ExecuteScript("{ return document.querySelectorAll('.content.comm-panel')[7].querySelectorAll('table')[0].querySelectorAll('tr')[2].querySelector('.txt_r').textContent.trim() }")
' MACD_12_25_days # MACD(12/25 ?)
fetch_result(IDX_MACD_12_25_DAYS) = driver.ExecuteScript("{ return document.querySelectorAll('.content.comm-panel')[7].querySelectorAll('table')[0].querySelectorAll('tr')[3].querySelector('.txt_r').textContent.trim() }")
' Application.Wait Now + TimeValue("00:30:01")
driver.Quit
run = fetch_result
Done:
' Debug.Print "hello done"
Exit Function
eh:
Debug.Print "hello error"
End Function