3

用xmlhttp获取百度贴吧的帖子列表

/前端开发 /2008.06.18

百度的贴吧没有提供rss聚合,使得其他网站很难取得帖子列表。所以想在自己的门户上列出某个贴吧最新的帖子列表,看来得另想办法。

获取其他网站的内容最简单的办法就是获取html代码,然后从中分离出想要的内容。要想获取html代码那就离不开xmlhttp了,可是一个贴吧 首页的代码量少说也有几十K,读取全部代码再分离,效率堪忧。只好另辟蹊径——用Wap站的贴吧。代码量少,只有几K,分析起来也比较容易。唯一不足的就 是wap一页只有十条记录。
不废话了,看代码。正则表达式写得太烂了,见谅!

<script type=”text/javascript”>
function createXMLHttpRequest(){
if (window.ActiveXObject)
{
xmlHttp = new ActiveXObject(”Microsoft.XMLHTTP”);
}
else if (window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
}

function startRequest(){
createXMLHttpRequest();
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open(”GET”,”http://wapp.baidu.com/f?kw=金蝶”,true);
xmlHttp.send(null);
}

function handleStateChange(){
if(xmlHttp.readyState == 4)
{
if(xmlHttp.status == 200)
{
result = xmlHttp.responseText;
DeelResult(result);
}
}
}

function DeelResult(str){
str = str.substring(str.indexOf(”<br/>”),str.indexOf(”<a accesskey”));
var re = /z=(.+?)[&]/g;
id = str.match(re);
var re = /["]>(\s+.)(.+?)</g;
txt = str.match(re);
inner=””;
for (i=0;i<10 ;i++ )
{
inner += “<a target=\”_blank\” href=\”http://tieba.baidu.com/f?k”+id[i]+txt[i]+”/a><br>”;
}
document.getElementById(”results”).innerHTML = inner;
}
startRequest();
</script >
<div id=”results” ></div >

(本文出自有意思Blog,转载时请注明出处)



文章评论

  1. 2008年6月16日 20:33

    沙发到手了。

    回复

  2. 2008年12月5日 23:48

    很好,使用wap的源码进行解析确实要好很多。
    另外补充一下,列表的url后面可以加pn=300和rn=50的参数。可以一次获得较多的帖子链接。

    回复

发表评论

*称呼不能为空
*请输入正确的邮箱
*内容不能为空