My code crashes, stating that _StringBetween is not a recognized function, even though I defined the correct #include that is needed. It doesn't crash on the first _StringBetween, but it crashes on the next one. Both _StringBetween's appear in Blue font, on the editor, confirming correct spelling, and correct number of parameters.... I'm puzzled...
See code below. Stack Exchange forces me to add more description, so you can jump to the code section now.
CODE:
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.14.5
Author: myName
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
; Script Start - Add your code below here
;"C:\install\AutoIt3.exe" "C:\ArgsTest.au3" /argumentOne:MyFirstValue /argumentTwo:MySecondValue
#include <MsgBoxConstants.au3>
#include <IE.au3>
#include <Array.au3>
#include <Date.au3>
#include <String.au3>
#include <Excel.au3>
#include <WinAPIFiles.au3>
$BOL = 'HLCUEUR1810BCLY1'
$Tankno = '6001505'
$Link = "https://www.hapag-lloyd.com/en/online-business/tracing/tracing-by-booking.html"
$Link = $Link & "?blno=" & $BOL
;MsgBox($MB_ICONINFORMATION, "Tutorial", $BOL)
$file = fileopen(@scriptdir & "\HL3.txt", 10)
$IE = _IECreate($Link, 0, 1)
Sleep (200)
$source = _IEDocReadHTML($IE)
FileWrite($file, $source)
;extracting the value needed
$target_source = _StringBetween($source, $Tankno, '</tr>')
$year = _StringBetween(target_source[0],$Tankno, "-")
$year = StringRight($year,4)
$month = _StringBetween($target_source[0],$year & '-', '-')
$day = _StringBetween($target_source[0],$year & "-" & $month & "-","<")
$day = StringLeft($day,2)
$ETA = $year & $month & $day
MsgBox($MB_ICONINFORMATION, "Tutorial", $ETA)
;$target_source2 = _StringBetween($target_source[0], '<td', '/td>')
;$target_source3 = _StringBetween($target_source2[0], '>', '<')
;$USDEUR = $target_source3[0]
It's not the cleanest approach, but it's a solution to get the year-month-day value for that you're looking for:
Improved code:
#include-once
#include <Array.au3>
#include <Date.au3>
#include <Excel.au3>
#include <IE.au3>
#include <MsgBoxConstants.au3>
#include <String.au3>
#include <WinAPIFiles.au3>
$BOL = 'HLCUEUR1810BCLY1'
$Tankno = '6001505'
$Link = "https://www.hapag-lloyd.com/en/online-business/tracing/tracing-by-booking.html"
$Link = $Link & "?blno=" & $BOL
$file = fileopen(@ScriptDir & "\HL3.txt", 2 + 8)
$IE = _IECreate($Link, 0, 1, 1, 1)
Sleep(2000)
$source = _IEDocReadHTML($IE)
FileWrite($file, $source)
$target_source = _StringBetween($source, $Tankno, '</tr>')
$aETA = StringRegExp($target_source[0], '(\d{4})-(\d{2})-(\d{2})', 3)
_ArrayDisplay($aETA) ; this is optional (see array content)
$ETA = $aETA[0] & $aETA[1] & $aETA[2]
MsgBox($MB_ICONINFORMATION, "Tutorial", $ETA)
Please notice:
Your line $year = _StringBetween(target_source[0],$Tankno, "-")
was not correct. You forgot the $
as variable indicator for $target_source. So the _StringBetween()
function wasn't the problem. I decided to filter the $target_source
with a RegEx expression instead of using _StringBetween() again for the year-month-day value.