批处理脚本获取HTML网站和解析内容(没有wget,curl或其他外部应用程序)

时间:2013-03-13 20:10:59

标签: curl batch-file html-parsing wget

我只需要使用Windows cmd功能。我需要来自网站的两个变量/字符串在batchscript中用于验证它的动作。为了不太简单,这个网站还需要进行身份验证。

我在某个地方找到了这个:

@set @x=0 /*
:: ChkHTTP.cmd
@echo off
setlocal
set "URL=http://www.google.com"
cscript /nologo /e:jscript "%~f0" %URL% | find "200" > nul
if %ErrorLevel% EQU 0 (
echo Web server ok % Put your code here %
) else (
echo Web server error reported
)
goto :EOF

JScript */
var x=new ActiveXObject("Microsoft.XMLHTTP");
x.open("GET",WSH.Arguments(0));x.send();
while (x.ReadyState!=4) {WSH.Sleep(50)};
WSH.Echo(x.status)

但我不确定是否有可能以这种方式获取网站内容而不是状态回答,而且我不知道如何实现网站认证。

上面的代码无法正常工作,因为它会因为管道而产生错误,但这似乎更接近我解析我希望的内容的需求。

1 个答案:

答案 0 :(得分:7)

我只使用wget从Windows批处理脚本中获取Web内容。通过JScript使用XHR是一个很棒的主意!

但是你试图掠夺的剧本似乎是用来检查网络服务器是否正在响应,而不是用于获取内容。

通过一些修改,您可以使用它来获取网页并执行您需要的任何处理。

@if (@a==@b) @end /*

:: fetch.bat <url>
:: fetch a web page

@echo off
setlocal
if "%~1"=="" goto usage
echo "%~1" | findstr /i "https*://" >NUL || goto usage

set "URL=%~1"
for /f "delims=" %%I in ('cscript /nologo /e:jscript "%~f0" "%URL%"') do (
    rem process the HTML line-by-line
    echo(%%I
)
goto :EOF

:usage
echo Usage: %~nx0 URL
echo     for example: %~nx0 http://www.google.com/
echo;
echo The URL must be fully qualified, including the http:// or https://
goto :EOF

JScript */
var x=new ActiveXObject("Microsoft.XMLHTTP");
x.open("GET",WSH.Arguments(0),true);
x.setRequestHeader('User-Agent','XMLHTTP/1.0');
x.send('');
while (x.readyState!=4) {WSH.Sleep(50)};
WSH.Echo(x.responseText);