I wouldn't discount Excel/Power Query for web scraping and content forming. Below uses another pretty interesting URL:
;Winbatch 2021c - Testing Excel Power Query for simple Web Scrape
;Requires Excel 2016 or Higher or Power Query added to Excel 2013 or earlier
;Stan Littlefield July 11, 2021
IntControl(73,1,0,0,0)
gosub udfs
qry = "Raleigh" ;gets city for URL's weather; also is tab name in Excel
cn = "Query - ":qry
mcode = getmcode()
BoxOpen("Please Wait","Creating Excel Power Query for Web Data")
toExcel()
BoxShut()
Pause("Query Completed","Save Workbook or Quit Excel")
Exit
;======================================================================================================
:WBERRORHANDLER
Terminate(@TRUE,"Error Encountered",geterror())
;======================================================================================================
:CANCEL
Display(2,"Operation Canceled","Goodbye...")
Exit
:udfs
#DefineSubRoutine geterror()
wberroradditionalinfo = wberrorarray[6]
lasterr = wberrorarray[0]
handlerline = wberrorarray[1]
textstring = wberrorarray[5]
linenumber = wberrorarray[8]
errmsg = "Error: ":lasterr:@LF:textstring:@LF:"Line (":linenumber:")":@LF:wberroradditionalinfo
Return(errmsg)
#EndSubRoutine
#DefineSubRoutine getmcode()
;M Code could be loaded from text file
;but if using WB's multi line, special chars must be escaped
code = $"
let
Source = Web.Page(Web.Contents("https:://www.timeanddate.com/weather/usa/|city|")),
Data0 = Source{0}[Data]
in
Data0
$"
code = StrReplace(code,"|city|",qry)
Return(code)
#EndSubRoutine
#DefineSubRoutine toExcel()
oXL = CreateObject("Excel.Application")
If oXL == 0 Then Terminate(@TRUE,"Script Will Terminate","Cannot Start Excel Instance")
oXL.Visible = @TRUE ; change this to @FALSE to run hidden
oXL.ScreenUpdating = @TRUE ; if running hidden, change this to @FALSE
oXL.UserControl = @TRUE
oXL.DisplayAlerts = @FALSE
oXL.WorkBooks.Add()
oWS = oXL.ActiveWorkBook.Worksheets(1)
oWS.Activate()
oWS.Name = qry
oXL.ActiveWorkBook.Queries.Add(::Name=qry,Formula=mcode,Description="Json Query")
cSource = "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=%qry%;Extended Properties=''"
qt = oWS.ListObjects.Add(::SourceType=0,Source=cSource,Destination=oWS.Range("$A$1")).QueryTable
qt.CommandText = "Select * FROM [%qry%]"
qt.Refresh()
;may take some time but should save
;oXL.ActiveWorkbook.SaveAs(cXLS)
;oXL.ActiveWorkbook.Close()
;oXL.Quit()
oWS=0
oXL=0
Return(1)
#EndSubRoutine
Return