• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

偷也是门技术――浅谈XMLHTTP应用:新闻_jquery

jquery 搞代码 7年前 (2018-06-12) 153次浏览 已收录 0个评论

本文参考互联网整理而成(在此感谢资料奉献者)。希望本文尽量系统,尽量易懂。

偷,即无劳而获。在网络上,诸如某大型权威站点发布了新闻,而自己的小小站点也想与时俱进,和人家一样同步更新,多N啊。于是,偷就是最好的办法了。偷是不道德的,不鼓励偷,但又不提倡不偷,都是技术惹的祸,扯远了~!

小偷程序是什么?

其实是通过XML中的XMLHTTP对象调用其它网站上的网页,甚至可以将接受的html代码进行过滤以获得需要内容(比如提取某某气象站,不可能是将整站提取显示,而只是需要显示天气的那部分)。

其实就是一个寄生虫嘛,适合该网站的小偷程序已经唯一确定了,则只要该站点不改版替换相关主要内容,则永远偷下去。否则,就需要相应的修改小偷程序了。btw,在小胖的PUBCMS中已定义为爬虫,我想意思也差不多了:P

那么如何偷呢?看过XMLHTTP介绍的应该了解些。

先定义了一个函数,解释在函数中:

 

<%
Function getHTTPPage(url)
    dim objXML
    set objXML=server.createobject(“MSXML2.XMLHTTP”)’定义
    objXML.open “GET”,url,false’打开
    objXML.send()’发送
    If objXML.readystate<>4 then ‘判断文档是否已经解析完,以做客户端接受返回消息
        exit function
    End If
    getHTTPPage=BytesToBstr(objXML.responseBody)’返回信息,同时用函数定义编码
    ‘getHTTPPage=bytes2BSTR(objXML.responseBody)’或者返回信息时用函数转换汉字
    set objXML=nothing’关闭
    if err.number<>0 then err.Clear
End Function
%>

 

接着就来看看定义编码函数BytesToBstr()的主要内容

<%
Function BytesToBstr(body)
dim objstream
set objstream = Server.CreateObject(“adodb.stream”)
    objstream.Type = 1
    objstream.Mode =3
    objstream.Open
    objstream.Write body
    objstream.Position = 0
    objstream.Type = 2
    objstream.Charset = “GB2312” 
    ‘转换原来默认的UTF-8编码转换成GB2312编码,否则直接用XMLHTTP调用有中文字符的网页得到的将是乱码
    BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function
%>

 

当然,还可以使用专门的函数来处理汉字:

Function bytes2BSTR(vIn)
strReturn = “”
For j = 1 To LenB(vIn)
    ThisCharCode = AscB(MidB(vIn,j,1))
    If ThisCharCode < &H80 Then
        strReturn = strReturn & Chr(ThisCharCode)
    Else
        NextCharCode = AscB(MidB(vIn,j+1,1))
        strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
        j = j + 1
    End If
Next
bytes2BSTR = strReturn
End Function

 

lenB返回字节数而不是字符数,同理ascB返回每个字节的ascii码,大于80h,也就是128的ascii是汉字――半个汉字,把半个半个的汉字ascii码拼合再用chr函数返回字符就可以了。

应用则如下:

<%
Dim Url,Html
Url = “http://www.cnbruce.com/blog&#8221;
Html = getHTTPPage(Url)
response.write(Html)
%>

 

即表示对 http://www.cnbruce.com/blog&nbsp; 的内容进行“偷”行为,返回了相关该站的内容。

拷贝下列内容保持为ASP文件进行调试
<%Function getHTTPPage(url)    dim objXML    set objXML=server.createobject(“MSXML2.XMLHTTP”)’定义    objXML.open “GET”,url,false’打开    objXML.send()’发送    If objXML.readystate<>4 then ‘判断文档是否已经解析完,以做客户端接受返回消息        exit function    End If    getHTTPPage=BytesToBstr(objXML.responseBody)’返回信息,同时用函数定义编码    set objXML=nothing’关闭    if err.number<>0 then err.Clear End FunctionFunction BytesToBstr(body)dim objstreamset objstream = Server.CreateObject(“adodb.stream”)    objstream.Type = 1    objstream.Mode =3    objstream.Open    objstream.Write body    objstream.Position = 0    objstream.Type = 2    objstream.Charset = “GB2312”      ‘转换原来默认的UTF-8编码转换成GB2312编码,否则直接用XMLHTTP调用有中文字符的网页得到的将是乱码    BytesToBstr = objstream.ReadText objstream.Closeset objstream = nothingEnd FunctionDim Url,HtmlUrl = “http://www.cnbruce.com/blog”Html = getHTTPPage(Url)response.write(Html)%> [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

这样一个页就被“偷”下来了。同时,注意到返回的信息中,有的图片不能显示,样式也不能连接,如要正常,则需要将返回的信息做过滤和调整。

那么该如何提取有用的返回信息,做过滤和调整呢?

 

欢迎大家阅读《偷也是门技术――浅谈XMLHTTP应用:新闻…_jquery,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:偷也是门技术――浅谈XMLHTTP应用:新闻_jquery

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址