|
现在,这个客户想做个网站,把先前那个网站的数据引用到自己的网站上来,但客户登陆后,也能看到先前那个网站的数据,(主要是信息数据,像按钮之类的东西,可以不显示)但,点击按钮后,数据提交到自己的网站上来。 不知道我说得清楚没有,请大伙帮帮忙,要能彻底解决了,怎么放我血都行!!! |
|
|
|
ding
|
|
|
我也很想知道第一個問題!我上次還問過了
關注ing~~~~~~~~ |
|
|
直接提交不行?xmlHTTP传输!
|
|
|
同意使用xmtHTTP
|
|
|
我好像没太看明白,好像是想继承以前网站的数据是不是?
你稍微再说具体一点吧…… |
|
|
同意使用xmtHTTP too
|
|
|
不知道是楼主的语言表达能力太差,还是我的语言理解太差,反正我是没有看懂。。。闪~~
|
|
|
楼主的意思是把别人网站登陆后看到的信息,在自己的网站上能看到,并且把当中的数据保存到自己的数据库里.
我觉得用xml吧.把网页有用的部分提取出来.存的时候要跟自己的数据库字段一致,不要存错了. |
|
|
能说详细点么???
我也觉得应该用xml技术,但,我是初学xml的,对其技术不了解 至于xmlhttp,更谈不上了,各位同仁能不能给点资料,参考参考```拜托了啊 |
|
|
XMLHTTP对象及其方法
------------------ MSXML中提供了Microsoft.XMLHTTP对象,能够完成从数据包到Request对象的转换以及发送任务。 创建XMLHTTP对象的语句如下: Set objXML = CreateObject("Msxml2.XMLHTTP") 或 Set objXML = CreateObject(“Microsoft.XMLHTTP”) ' Or, for version 3.0 of XMLHTTP, use: ' Set xml = Server.CreateObject("MSXML2.ServerXMLHTTP") 对象创建后调用Open方法对Request对象进行初始化,语法格式为: poster.open http-method, url, async, userID, password Open方法中包含了5个参数,前三个是必要的,后两个是可选的(在服务器需要进行身份验证时提供)。参数的含义如下所示: http-method: HTTP的通信方式,比如GET或是 POST url: 接收XML数据的服务器的URL地址。通常在URL中要指明 ASP或CGI程序 async: 一个布尔标识,说明请求是否为异步的。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作 userID 用户ID,用于服务器身份验证 password 用户密码,用于服务器身份验证 XMLHTTP对象的Send方法 用Open方法对Request对象进行初始化后,调用Send方法发送XML数据: poster.send XML-data Send方法的参数类型是Variant,可以是字符串、DOM树或任意数据流。发送数据的方式分为同步和异步两种。在异步方式下,数据包一旦发送完毕,就结束Send进程,客户机执行其他的操作;而在同步方式下,客户机要等到服务器返回确认消息后才结束Send进程。 XMLHTTP对象中的readyState属性能够反映出服务器在处理请求时的进展状况。客户机的程序可以根据这个状态信息设置相应的事件处理方法。属性值及其含义如下表所示: 值 说明 0 Response对象已经创建,但XML文档上载过程尚未结束 1 XML文档已经装载完毕 2 XML文档已经装载完毕,正在处理中 3 部分XML文档已经解析 4 文档已经解析完毕,客户端可以接受返回消息 客户机处理响应信息 客户机接收到返回消息后,进行简单的处理,基本上就完成了C/S之间的一个交互周期。客户机接收响应是通过XMLHTTP对象的属性实现的: ● responseTxt:将返回消息作为文本字符串; ● responseXML:将返回消息视为XML文档,在服务器响应消息中含有XML数据时使用; ● responseStream:将返回消息视为Stream对象。 Set objXML = CreateObject("Microsoft.XMLHTTP") '创建XMLHTTP组件; UrlSend = "http://xxxx/" objXML.open "GET",UrlSend,false objXML.send() ReturnVar = objXML.responseText '处理返回数据做判断! '取得网页文件代码函数 function getHTTPPage(url) dim http set http=createobject("MSXML2.XMLHTTP") Http.open "GET",url,false Http.send() if Http.readystate<>4 then exit function end if getHTTPPage=bytes2BSTR(Http.responseBody) set http=nothing if err.number<>0 then err.Clear end function '字节转化成字符串函数 Function bytes2BSTR(vIn) dim strReturn dim i,ThisCharCode,NextCharCode strReturn = "" For i = 1 To LenB(vIn) ThisCharCode = AscB(MidB(vIn,i,1)) If ThisCharCode < &H80 Then strReturn = strReturn & Chr(ThisCharCode) Else NextCharCode = AscB(MidB(vIn,i+1,1)) strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) i = i + 1 End If Next bytes2BSTR = strReturn End Function 比如你的myurl="www.163.com" Content = getHTTPPage(myurl) 你可以response.write出content来看,然后用instr,mid,replace提炼出页面的主题 2 Function GetHTTPPage(url) '获取服务器生成的html代码 on error resume next dim XmlHttp set XmlHttp=Server.createobject("Microsoft.XMLHTTP") XmlHttp.open "GET",url,false XmlHttp.send() 'getHTTPPage=Http.responseText if XmlHttp.readystate<>4 then exit function GetHTTPPage=bytes2BSTR(XmlHttp.responseBody) set XmlHttp=nothing if err.number<>0 then err.Clear End Function Function Bytes2bStr(vin) Dim BytesStream,StringReturn Set BytesStream = Server.CreateObject("ADODB.Stream") BytesStream.Type = 2 BytesStream.Open BytesStream.WriteText vin BytesStream.Position = 0 BytesStream.Charset = "GB2312" BytesStream.Position = 2 StringReturn =BytesStream.ReadText BytesStream.close Set BytesStream = Nothing Bytes2bStr = StringReturn End Function 3 function GetXml(Url){ try{ var XmlHttp=Server.CreateObject("Microsoft.XMLHTTP"); XmlHttp.open("get",Url,false); XmlHttp.send(); return XmlHttp.responseBody; }catch(e){return null} } function Bytes2bStr(vin){ try{ var BytesStream,StringReturn; BytesStream = Server.CreateObject("ADODB.Stream") with(BytesStream){ Type =2; Open(); WriteText(vin); Position = 0 ; Charset = "GB2312"; Position = 2; StringReturn = ReadText(); close(); } BytesStream = null return StringReturn; }catch(e){return ""} } |
|
|
谢谢 sheng9hhd(无形) 的资料 :)
从你提供的资料中,看到了点希望``````` 能不能推荐点短期内学习xmlhttp的速成资料,或者这一技术的源码实例。眼前最主要的是应付老板啊```完事之后再好好学学```指点指点,OK``` |
|
|
to ycted(长城万里今犹在,不见当年秦始皇!)
楼主的意思是把别人网站登陆后看到的信息,在自己的网站上能看到,并且把当中的数据保存到自己的数据库里. ==== 不一定要保存到自己数据库中,只要能不登陆到对方网站后所看到的信息显示到自己的网站就可以了。 难点有两个 1, 对方的网站要登陆才能看到数据信息的 2, 怎么提取所需要的数据 |
|
|
把登陆到对方网站后所看到的信息显示到自己的网站就可以了。
难点有两个 1, 对方的网站要登陆才能看到数据信息的 2, 怎么提取所需要的数据 |
|
|
怎样取出网页里的部分内容
-----------> <% on error resume next Private d_exsit Dim Retrieval Dim TakenHTML Function GetURL(url) Set Retrieval = Server.CreateObject("Microsoft.XMLHTTP") With Retrieval .open "GET", url, False, "", "" .Send GetURL = .responsebody End With Set Retrieval = Nothing End Function Function bytes2BSTR(vIn) Dim strReturn Dim I, ThisCharCode, NextCharCode strReturn = "" For I = 1 To LenB(vIn) ThisCharCode = AscB(MidB(vIn, I, 1)) If ThisCharCode < &H80 Then strReturn = strReturn & Chr(ThisCharCode) Else NextCharCode = AscB(MidB(vIn, I + 1, 1)) strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) I = I + 1 End If Next bytes2BSTR = strReturn End Function TakenHTML = GetURL("http://www.eyou.com") TakenHTML=bin2str(TakenHTML) titl=InStr(1,takenhtml,"<title>",1) titll=InStr(1,takenhtml,"</title>",1) title=mid(takenhtml,titl,titl1) fon=InStr(1,takenhtml,"<font class='STitle'>",1) fonn=InStr(1,takenhtml,"</font>",1) font=mid(takenhtml,fon,fonn) pp=InStr(1,takenhtml,"<p class=content>",1) ppp=InStr(1,takenhtml,"</p>",1) pppp=mid(takenhtml,pp,ppp) %> |
|
|
to aspczlover(执子之手...)
谢了先```似乎看懂了你写的代码``` 有个疑问 TakenHTML=bin2str(TakenHTML) --是不是写错了啊,应该bytes2BSTR(vIn)吧??? === 唔,确实是,用bytes2BSTR()就输出E邮的网页,我改了下,用bin2str()确出来一堆乱码 |
|
|
问题又来了
titl=InStr(1,takenhtml,"<title>",1) titll=InStr(1,takenhtml,"</title>",1) title=mid(takenhtml,titl,titl1) 这几个是用来提取title名的,可是,我这怎么就没提取出来呢??? <%=title%>---啥也没有```晕 <%=titl%>---这显示出位置 <%=titll%>---这显示出位置 <%=TakenHTM%>---呵,整个E邮都出来了 |
|
|
呵呵 这个我刚作了 我把那个网页的html代码 赋给一个文本域 然后提交后在一个页面得到一个长字符串 再根据自己的需要截取存到数据库里去。
如在 自己的html代码里有个 textarea <textarea name="aa" cols=100% rows=10 id="BodyID" > </textarea>] 然后把如 sheng9hhd(无形)的底三项 所写函数一样 把function GetXml(Url) 的最后一句改为BodyID.value=unescape(bytes2BSTR(xmlHTTP.responseBody)); 一切OK! |
|
|
唔```我明白了,估计是汉字的显示问题在作怪````
|
|
|
其实用XMLHTTP不难,难就难在怎么样处理截取回来的网页数据!
这可是要有很强的字符处理能力才行! |
|
|
还是不对啊```我把title改成英文也照样显示不出来啊````郁闷ing
我用的是 aspczlover(执子之手...) 的程序````不知道什么错误``` 哪位老兄知道,帮忙指点一下``` |
|
|
其实用XMLHTTP不难,难就难在怎么样处理截取回来的网页数据!
这可是要有很强的字符处理能力才行! ------------------------------------------------------ ??? 真的么???字符处理似乎没有那么难吧? |
|
|
对方的网站要登陆才能看到数据信息的,而我们要做的是不登陆就读数据,或者说,登陆过程由程序执行
这个问题谁能帮忙解决一下啊???? |
|
楼主有问题问你,当你登陆后所见到的第1个页面是不是你所想要提取的页面啊?
|
|
如果登陆后的第1个页面不是你想要的页面的话.估计你要搜索一下关于session欺骗的帖子.一般的网站判断是否有权限都是用的session做的.如果你要的是登陆后所出现第1个页面的内容,你可以参考一下我才做的抓取别人网站的天气预报的代码,希望对你有帮助.对了还差点望了,该方法只支持get.如果别人判断登陆的页面是写的request.form的话..那你就要想想别的方法了.
下面是我的天气代码,有些地方我会注释的. <% '*********************************************************************************** ' 文件名.........: Weather.asp ' 作者...........: ycted ' 说明...........: 自动获取天气预报 %> <% function ShowError() Response.write "没有抓取到!" Response.end end Function function ShowError1() Response.write "没有抓取到1!" Response.end end Function function ShowError2() Response.write "没有抓取到2!" Response.end end Function '取得网页文件代码函数 function getHTTPPage(url) dim http set http=createobject("Microsoft.XMLHTTP") Http.open "GET",url,false Http.send() if Http.readystate<>4 then exit function end if getHTTPPage=bytes2BSTR(Http.responseBody) set http=nothing if err.number<>0 then err.Clear end function '字节转化成字符串函数 Function bytes2BSTR(vIn) dim strReturn dim i,ThisCharCode,NextCharCode strReturn = "" For i = 1 To LenB(vIn) ThisCharCode = AscB(MidB(vIn,i,1)) If ThisCharCode < &H80 Then strReturn = strReturn & Chr(ThisCharCode) Else NextCharCode = AscB(MidB(vIn,i+1,1)) strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) i = i + 1 End If Next bytes2BSTR = strReturn End Function '---------------------------显示详细------------------------------- shen = 1 shi = "CHXX0407" if Shi = "" or shi = "0" then Response.Write "缺少必须参数!" Response.end end if myurl = "http://cn.weather.yahoo.com/CHXX/"&Shi&"/index_c.html" '这里换成别人网站post到的文件地址,你后面可以带参数,例如index.asp??sta_id=57461 Content = getHTTPPage(myurl) '解析成静态的代码 if Content = "" or len(Content) < 500 then ShowError() '-----图象显示 Temp3 = instr(Content,"<td rowspan=2 align=center valign=middle bgcolor=#eeeeee height=100") '这里的<td row...你要找代码里唯一的,这里是你需要的内容的从什么地方开始的标识 if Temp3 = 0 then showError1() Temp2 = instr(Temp3,Content,"<br><br> <font size=-2") '这里也是一样,也是代码里唯一的,这里是结束标识 if Temp3 =0 or Temp3 < 0 or Temp2 = 0 or Temp2 < 0 or Temp2 < Temp3 then showError2() Content2 = Replace(mid(Content,Temp3,Temp2-Temp3),"<br><br> <font size=-2","") '这里和下面就是将你不想要的一些代码替换掉 content2 = Replace(content2,"http://us.yimg.com/i/us/we/intl/","/small/") content2 = replace(content2,"<td rowspan=2 align=center valign=middle bgcolor=#eeeeee height=100","") content2 = replace(content2,"%","") content2 = replace(content2,">","") content2 = replace(content2," width=52 height=52","") content2 = content2&">" Response.Write content2 %> |
|
登陆-->请用xmlHTTP的post方法!
|
|
看不懂,学习中~~~~~~~~~``
|
|
登陆后,看到的是个框架页,所需要的信息被包含在框架里。
还有个问题,在登陆页,服务端生成一个随机数 uid 作为登陆验证 <input type=HIDDEN name="uid" value="3c35593378016f53"> 而且,这个数将在 登陆前后 伴随用户贯穿整个网站,用户登陆验证中,需要对这个 uid 进行验证,如果验证通过,这个数将伴随用户到每个页,也同样进行验证。 问:对这个数的读取,有没有什么想法??? 其实就是验证码````不知道对验证码有没有什么好的解决办法? 有人建议:首先用xmlhttp获取登录页的html文本,用正则表达式析取验证码,然后用在整个过程中将它附加进去就是了. 请问,怎么用 正则表达式析取验证码 就以 <input type=HIDDEN name="uid" value="3c35593378016f53"> 给段代码例子看看吧``` |
|
问题还真不少!学习
|
|
Set regEx=New RegExp
regEx.Pattern="(.+)(value="")(.+)("")(.+)" regEx.IgnoreCase=true regEx.Global=True Str = "<input type=HIDDEN name=""uid"" value=""3c35593378016f53"">" Str = regEx.replace(Str,"$3") response.write Str |
|
关注...
|
|
感谢大家的回答,感谢大伙的帮助``` :)
特别鸣谢以下朋友: ycted(长城万里今犹在,不见当年秦始皇!) sheng9hhd(无形) aspczlover(执子之手...) 不知道还有没有什么补充的,本帖子明天结贴。 |
|
我觉得如果你的帐号可以一直用的话,不如你把要调用的页面做在iframe里,在该页面做个隐藏的form提交action为你要读取内容的网站登陆的页面如:
response.write "<form name='regok' method='post' action='regend.asp'>" response.write "<input type='hidden' name='Username' value='"&Username&"'>" response.write "</form>" response.write "<script language=""JavaScript"" type=""text/JavaScript"">" response.write "{" response.write " document.regok.submit() " response.write "}" response.write "</script>" response.end 以上意见仅供你思考. |
|
up
|
|
呵```回答的很详尽了```3Q各位``
|
|
to sheng9hhd(无形)
这里还有点分,浪费了,都给你吧 http://community.csdn.net/Expert/topic/3266/3266160.xml?temp=4.446048E-02 |
|
<store>
|
|
UP
|