Asp classic 使用经典ASP,如何获取或截取html页面的元标记?

Asp classic 使用经典ASP,如何获取或截取html页面的元标记?,asp-classic,Asp Classic,使用下面的代码,我可以访问站点,获取数据,但是我无法获得metatitle标签。令人惊讶的是,在使用经典ASP进行屏幕抓取时,我搜索了获取元标记的方法,但只找到了几个示例,这两个示例我都无法使用 有什么帮助吗 rss_url = "https://www.nationalgeographic.com/science/2019/06/opal-fossils-reveal-new-species-dinosaur-australia-fostoria/" Set objHTTP = Create

使用下面的代码,我可以访问站点,获取数据,但是我无法获得metatitle标签。令人惊讶的是,在使用经典ASP进行屏幕抓取时,我搜索了获取元标记的方法,但只找到了几个示例,这两个示例我都无法使用

有什么帮助吗

rss_url = "https://www.nationalgeographic.com/science/2019/06/opal-fossils-reveal-new-species-dinosaur-australia-fostoria/"

Set objHTTP = CreateObject("Microsoft.XMLHTTP")
objHTTP.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
objHTTP.Open "GET", rss_url, False
objHTTP.Send

if objHTTP.Status = 200 Then sdata = BinaryToString(objHTTP.ResponseBody)

Set objHTTP = Nothing      

Set regEx = New RegExp
regEx.Pattern = "<meta.*property=""og:image"".*content=""(.*)"".*\/>"
regEx.IgnoreCase = True
Set matches = regEx.Execute(sdata)
if matches.Count > 0 then
KeywordAl = matches(0).SubMatches(0)
response.write "Image = " & KeywordAl&"<hr>"
end if
试试这个:

函数GetTextFromUrlurl Dim-oXMLHTTP 暗淡状态 设置oXMLHTTP=CreateObjectMSXML2.ServerXMLHTTP.3.0 oXMLHTTP.openget,url,False 发送 如果oXMLHTTP.Status=200,则 GetTextFromUrl=oXMLHTTP.responseText 如果结束 端函数 Dim sResult:sResult=GetTextFromUrlhttps://www.nationalgeographic.com/science/2019/06/opal-fossils-reveal-new-species-dinosaur-australia-fostoria/ Set regEx=New RegExp 正则表达式模式= regEx.IgnoreCase=True 设置匹配项=regEx.ExecutesResult 如果匹配。计数>0,则 关键词=匹配0.SubMatches0 response.write Image=&KeywordAl& 如果结束 对于我来说,该页面的输出:

图像=

编辑:在这里添加了一些调试信息。请尝试此代码段,看看它对您的TLS版本有何说明-此站点可能拒绝低于特定TLS级别的连接

设置objHttp=Server.CreateObjectWinHTTP.WinHTTPRequest.5.1 objHttp.openget,https://howsmyssl.com/a/check错误的 发送 Response.Write objHttp.responseText 设置objHttp=Nothing 答复.完
元标题标签,如我认为标签不再在网络标准中??这就是我不想抓住它的原因。元标题标签是,或者至少是它的一个版本。我在那页上看了看,不存在,但确实存在。不过,我注意到大多数网站都有。哪里也去不了,你从哪里听说的?就用这个吧。如果你真的想这样做,坚持抓取meta标签中的东西,在你试图抓取的页面中。。。不是这个。也不是这个。是这样的:。属性=vs名称=。请注意,不同的网站可能会使用稍有不同的语法,您必须仔细检查…基于我的搜索,我得到了很多关于这个的混合答案。这是本论坛的主题。想法?为了继续@thirtydot,请看:您将看到,这仍然是规范的一部分,不在任何地方,谢谢。我在oXMLHTTP上收到错误。发送:发生安全错误。我切换到6.0并收到错误:系统无法找到指定的资源。这意味着什么?我可以访问其他https站点,因此我认为这不是证书问题。您是否尝试过MSXML2.ServerXMLHTTP.6.0?还是MSXML2.XMLHTTP.6.0?第一个对我有用,但是第二个会产生你提到的错误。我在上面的回答中添加了一个小片段,你能试试这个来确认你的TLS级别吗?这可能是因为网站拒绝某些TLS级别。经典ASP使用它运行的服务器的默认TLS,但有些人尝试设置该级别,例如,在这里,但除非安装该级别,否则您将运气不佳。这在哪个服务器上运行?如果你想安装的话,看看吧?啊,可能是这样。我检查了国家地理域,他们不接受TLS1.0连接:TLS1.3不接受,TLS1.2不接受,TLS1.1不接受,TLS1.0不接受。所以我想这就是问题所在。对不起,我不知道该怎么办:
Function BinaryToString(byVal Binary)
    '--- Converts the binary content to text using ADODB Stream

    '--- Set the return value in case of error
    BinaryToString = ""

    '--- Creates ADODB Stream
    Dim BinaryStream
    Set BinaryStream = CreateObject("ADODB.Stream")

    '--- Specify stream type.
    BinaryStream.Type = 1 '--- adTypeBinary

    '--- Open the stream And write text/string data To the object
    BinaryStream.Open
    BinaryStream.Write Binary

    '--- Change stream type to text
    BinaryStream.Position = 0
    BinaryStream.Type = 2 '--- adTypeText

    '--- Specify charset for the source text (unicode) data.
    BinaryStream.CharSet = "UTF-8"

    '--- Return converted text from the object
    BinaryToString = BinaryStream.ReadText
End Function