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

Tag: 前端开发丁丁 @ 12:31 18-06-2008

百度的贴吧没有提供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 >

3 Responses to “用xmlhttp获取百度贴吧的帖子列表”

  1. cnscorpio says:

    沙发到手了。

  2. cnscorpio says:

    方法不错

  3. asus枪手 says:

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

说两句吧