这不就是用xmlhttp抓取网页吗? 造成乱码的原因是你用的是responseText,而responseText对中文支持不好。google的好用是因为他返回的是utf8编码。你可以用ResponseBody取得并做二进制到文本的转换。 给两个例子: 1、vbs的例子 <script language="vbscript"> Function bytes2BSTR(vIn) Dim strReturn,i,ThisCharCode,innerCode,Hight8,Low8,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 = strReturnEnd Function </script><script language=javascript> var oDiv //添加用的节点 var nP //DIV的 padding-left var xh //xmlhttp function getXML() { oDiv = document.all.m oDiv.innerHTML = "正在装载栏目数据,请稍侯......." oDiv.style.display= "" xh = new ActiveXObject("Microsoft.XMLHTTP") xh.onreadystatechange = getReady xh.open("GET",a.value,true) xh.send() }function getReady() { if(xh.readyState==4) { if(xh.status==200) { oDiv.innerHTML = "完成" } else { oDiv.innerHTML = "抱歉,装载数据失败。原因:" + xh.statusText } } } </script> URL:<input name=a value="http://www.microsoft.com"> <input onclick="javascript:getXML()" type="button" value="get HTML"> <input onclick="javascript:if(xh && xh.responseText) oDiv.innerHTML=bytes2BSTR(xh.ResponseBody)" type="button" value="output"> <div id=m></div>2、js的例子 <input type=text name=url size=74 value="http://expert.csdn.net/Expert/topic/1754/1754016.xml?temp=.9112055"> <input type=button value=载入 onClick="test()"><br> <textarea name=txt cols=80 rows=14></textarea><script language="javascript"> var s=""; function LoadHTML(url) { var xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP"); xmlHTTP.open("GET",url,false); xmlHTTP.setRequestHeader("Contrn-type","text/html"); xmlHTTP.setRequestHeader("Contrn-charset","gb2312"); xmlHTTP.send(); var s = xmlHTTP.responseText; if(xmlHTTP.responseText.indexOf("Error:")!=-1) { alert(xmlHTTP.responseText); }else { return xmlHTTP.responseBody; } }//二进制转换ASCII var adTypeBinary = 1 var adTypeText = 2 function bytes2bstr(vin){ var st = new ActiveXObject("adodb.stream") with (st){ Type = adTypeText Open() WriteText(vin) Position = 0 Charset = "GB2312" Position = 2 return ReadText } }function test() { ps = bytes2bstr(LoadHTML(document.all.url.value)); document.all.txt.value = ps; }</script>
谢谢大家!!!我写出来了^-^给分喽...1.<br> <textarea id=text1 style="width: 90%; height: 50%">啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺</textarea><br>2.<br> <input id=inpu2 onclick=f_inpu2() type=button value="search 0-3754"> <input id=inpu2a><br> <iframe id=ifra2 src="about:" width=90% height=50%></iframe><br>3.<br> <input id=inpu3 onclick=f_text3() type=button value="source"><br> <textarea id=text3 style="width: 90%; height: 50%"></textarea><br><script> ///////////////////////////// user function ////////////////////////////////// function f_inpu2() { tmpsrc='<iframe id=ifra2 src="http://www1.baidu.com/baidu?word='+text1.value.charAt(inpu2a.value)+'"width=90% height=50%></iframe>' //prepare the search char document.all.ifra2.outerHTML=tmpsrc //run search inpu2a.value++ //prepare next search }function f_text3() { text3.value=bytes2bstr(loadContent(document.getElementById("ifra2").src)) //put source to text3 } function loadContent(strURL) //I get this code from a friend (used for "function f_text3()") { var strContent = ""; if (typeof strURL != "string" || strURL == "")return strContent; try { var oProxy = new ActiveXObject("Microsoft.XMLHTTP");
oProxy["Open"]("GET", strURL, false); oProxy["Send"](); /// strContent = oProxy["responseText"]; //get Text html strContent = oProxy["responseBody"]; //get Bin html, and then change2text } catch(e){status = e.description} return strContent; } function bytes2bstr(vin) //Have this code from a friend (used for "function f_text3()") { var st = new ActiveXObject("adodb.stream") with (st){ Type = 2 //var adTypeBinary = 1; var adTypeText = 2 Open() WriteText(vin) Position = 0 Charset = "GB2312" Position = 2 return ReadText } }</script> <script> ///////////////////////////// system function ///////////////////////////////// function window.onload() { inpu2a.value=0 //set init is null } </script>
我就要百度!!!
NAMO是什么?能帮我写一个吗?
上面的代码function loadContent(strURL)是骆驼给的,google的好用,但我想要用百度的
大家进来聊天吧^-^
散分分分分分分分分分分分分分分分分分分分分分分!!!
1.<br>
....
顶楼是一段完整的代码!!!
....
</script>
3.textarea中的代码就是2.iframe的源码
但是,中文是乱码?!救我!!!
我是中文2000server/ie6sp1
把网页换成csdn也不行,只有google能正常显示,我现在需要用"百度"做自动搜索
在我机器上正常
楼主是说:
按下这个“search 0-3754”button
再按这个“source”按钮后<textarea id=text3 style="width: 90%; height: 50%"></textarea><br>
这里面的汉字成了乱码!!!
<html><head><title>百度搜索_啊</title><meta http-equiv="content-type" content="text/html;charset=gb2312">
......而实际显示在textarea里的是:
<html><head><title>?ٶ???</title><meta http-equiv="content-type" content="text/html;charset=gb2312">
......
1.<br>
....
顶楼是一段完整的代码!!!
....
</script>
造成乱码的原因是你用的是responseText,而responseText对中文支持不好。google的好用是因为他返回的是utf8编码。你可以用ResponseBody取得并做二进制到文本的转换。
给两个例子:
1、vbs的例子
<script language="vbscript">
Function bytes2BSTR(vIn) Dim strReturn,i,ThisCharCode,innerCode,Hight8,Low8,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 = strReturnEnd Function
</script><script language=javascript>
var oDiv //添加用的节点
var nP //DIV的 padding-left
var xh //xmlhttp
function getXML()
{
oDiv = document.all.m
oDiv.innerHTML = "正在装载栏目数据,请稍侯......."
oDiv.style.display= ""
xh = new ActiveXObject("Microsoft.XMLHTTP")
xh.onreadystatechange = getReady
xh.open("GET",a.value,true)
xh.send()
}function getReady()
{
if(xh.readyState==4)
{
if(xh.status==200)
{ oDiv.innerHTML = "完成"
}
else
{
oDiv.innerHTML = "抱歉,装载数据失败。原因:" + xh.statusText
}
}
}
</script>
URL:<input name=a value="http://www.microsoft.com">
<input onclick="javascript:getXML()" type="button" value="get HTML">
<input onclick="javascript:if(xh && xh.responseText) oDiv.innerHTML=bytes2BSTR(xh.ResponseBody)" type="button" value="output">
<div id=m></div>2、js的例子
<input type=text name=url size=74 value="http://expert.csdn.net/Expert/topic/1754/1754016.xml?temp=.9112055">
<input type=button value=载入 onClick="test()"><br>
<textarea name=txt cols=80 rows=14></textarea><script language="javascript">
var s="";
function LoadHTML(url) {
var xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");
xmlHTTP.open("GET",url,false);
xmlHTTP.setRequestHeader("Contrn-type","text/html");
xmlHTTP.setRequestHeader("Contrn-charset","gb2312"); xmlHTTP.send();
var s = xmlHTTP.responseText; if(xmlHTTP.responseText.indexOf("Error:")!=-1) {
alert(xmlHTTP.responseText);
}else {
return xmlHTTP.responseBody;
}
}//二进制转换ASCII
var adTypeBinary = 1
var adTypeText = 2
function bytes2bstr(vin){
var st = new ActiveXObject("adodb.stream")
with (st){
Type = adTypeText
Open()
WriteText(vin)
Position = 0
Charset = "GB2312"
Position = 2
return ReadText
}
}function test() {
ps = bytes2bstr(LoadHTML(document.all.url.value));
document.all.txt.value = ps;
}</script>
<textarea id=text1 style="width: 90%; height: 50%">啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺</textarea><br>2.<br>
<input id=inpu2 onclick=f_inpu2() type=button value="search 0-3754">
<input id=inpu2a><br>
<iframe id=ifra2 src="about:" width=90% height=50%></iframe><br>3.<br>
<input id=inpu3 onclick=f_text3() type=button value="source"><br>
<textarea id=text3 style="width: 90%; height: 50%"></textarea><br><script>
///////////////////////////// user function //////////////////////////////////
function f_inpu2()
{
tmpsrc='<iframe id=ifra2 src="http://www1.baidu.com/baidu?word='+text1.value.charAt(inpu2a.value)+'"width=90% height=50%></iframe>' //prepare the search char document.all.ifra2.outerHTML=tmpsrc //run search inpu2a.value++ //prepare next search
}function f_text3()
{
text3.value=bytes2bstr(loadContent(document.getElementById("ifra2").src)) //put source to text3
}
function loadContent(strURL) //I get this code from a friend (used for "function f_text3()")
{
var strContent = "";
if (typeof strURL != "string" || strURL == "")return strContent;
try
{
var oProxy = new ActiveXObject("Microsoft.XMLHTTP");
oProxy["Open"]("GET", strURL, false);
oProxy["Send"]();
/// strContent = oProxy["responseText"]; //get Text html
strContent = oProxy["responseBody"]; //get Bin html, and then change2text
}
catch(e){status = e.description}
return strContent;
}
function bytes2bstr(vin) //Have this code from a friend (used for "function f_text3()")
{
var st = new ActiveXObject("adodb.stream")
with (st){
Type = 2 //var adTypeBinary = 1; var adTypeText = 2
Open()
WriteText(vin)
Position = 0
Charset = "GB2312"
Position = 2
return ReadText
}
}</script>
<script>
///////////////////////////// system function /////////////////////////////////
function window.onload()
{
inpu2a.value=0 //set init is null
}
</script>