使用最强大的功能JS; #FUNCTION# ====================================================================
; Name ..........: _TableGetData
; Description ...: 提取页面中的表格数据,返回 JSON 格式字符串。
; Syntax ........: _TableGetData([$sSelector = "table"[, $iIndex = 0[, $bAll = False]]])
; Parameters ....: $sSelector - CSS 选择器,默认 "table"
; $iIndex - 第几个匹配表格 (0 起算),仅当 $bAll=False 时有效
; $bAll - True = 返回所有匹配表格的数据
; Return values .: 成功 - JSON 字符串。
; 单表格: [["行1列1","行1列2"],["行2列1","行2列2"]]
; 全部: [[表格1],[表格2],...]
; 失败 - 返回 0,并设置 @error = 1
; Remarks .......: 不包含 JSON 解析,返回的字符串请自行用 Json_Decode 等库处理。
; ====================================================================
Func _TableGetData($sSelector = "table", $iIndex = 0, $bAll = False)
Local $sEscaped = StringReplace($sSelector, "", "\")
$sEscaped = StringReplace($sEscaped, "'", "\'")
Local $sJS
If $bAll Then
$sJS = _
"(function(){" & _
" var tables = document.querySelectorAll('" & $sEscaped & "');" & _
" var result = [];" & _
" for (var t = 0; t < tables.length; t++) {" & _
" var table = tables[t];" & _
" var data = [];" & _
" for (var i = 0; i < table.rows.length; i++) {" & _
" var row = table.rows[i];" & _
" var rowData = [];" & _
" for (var j = 0; j < row.cells.length; j++) {" & _
" rowData.push(row.cells[j].innerText.trim());" & _
" }" & _
" data.push(rowData);" & _
" }" & _
" result.push(data);" & _
" }" & _
" return result;" & _
"})()"
Else
$sJS = _
"(function(){" & _
" var tables = document.querySelectorAll('" & $sEscaped & "');" & _
" if (tables.length <= " & $iIndex & ") return null;" & _
" var table = tables[" & $iIndex & "];" & _
" var data = [];" & _
" for (var i = 0; i < table.rows.length; i++) {" & _
" var row = table.rows[i];" & _
" var rowData = [];" & _
" for (var j = 0; j < row.cells.length; j++) {" & _
" rowData.push(row.cells[j].innerText.trim());" & _
" }" & _
" data.push(rowData);" & _
" }" & _
" return data;" & _
"})()"
EndIf
Local $sJsonResult = _AUCDP_Evaluate($sJS)
If @error Or $sJsonResult = "" Or $sJsonResult = "null" Then
Return SetError(1, 0, 0)
EndIf
Return $sJsonResult
EndFunc
|