我自己开发的工具,打印出百度贴吧某用户发表过的所有帖子

简介: 我自己开发的工具,打印出百度贴吧某用户发表过的所有帖子

 

</div><div>a {</div><div> color: green;</div><div> font-family: arial;</div><div> font-weight: bold</div><div>}</div><div>

</div><div>/* Jerry 2017-02-06 14:58PM update</div><div> should use C:\MyApp\Chrome\Application\chrome.exe --user-data-dir="C:/yaas" --disable-web-security</div><div> and then FIRST LOG ON BAIDU successfully!!!!</div><div>*/</div><div>

</div><div>/* Jerry 2017-02-05 5:54PM</div><div>这个警告的意思是说:请求的资源可能会被(扩展/或其他什么机制)屏蔽掉。</div><div>之所以会出现这个警告,是因为去获取该资源的请求其实并(还)没有真的发生,所以 Header 里显示的是伪信息,直到服务器真的有响应返回,这里的 Header 信息才会被更新为真实的。不过这一切也可能不会发生,因为该请求可能会被屏蔽。比如说 AdBlock 什么的,当然了不全是浏览器扩展,具体情况具体分析了。</div><div>对了,别忘了用 chrome://net-internals 来帮助你查找被屏蔽的请求以及可能的原因。</div><div>*/</div><div>var PREFIX = "http://tieba.baidu.com";</div><div>var START = "http://tieba.baidu.com/i/i/my_tie";</div><div>//var START = "http://www.baidu.com";</div><div>var POST = {};</div><div>var TOTAL = 0;</div><div>var SORTED = [];</div><div>function getTotalCount(collection){</div><div> var count = 0;</div><div> for( bar in collection){</div><div>  if( !collection.hasOwnProperty(bar))</div><div>   continue;</div><div>  var postList = collection[bar];</div><div>  count += postList.length;</div><div> }</div><div> return count;</div><div>}</div><div>function shouldEnd(previousCount) {</div><div> TOTAL = getTotalCount(POST);</div><div> console.log("pre: " + previousCount + " total: " + TOTAL);</div><div> return ( previousCount == TOTAL );</div><div>}</div><div>function main() {</div><div> var html = getPostByAJAX(START);</div><div> handleLiChildren(html);</div><div> var page = 2;</div><div> while(1){</div><div>  var prevCount = getTotalCount(POST);</div><div>  var task = START + "?&pn=" + page;</div><div>  var html = getPostByAJAX(task);</div><div>  handleLiChildren(html);</div><div>  page++;</div><div>  /*</div><div>  if( page >=2 )</div><div>   break;*/</div><div>  if( shouldEnd(prevCount) )</div><div>   break;</div><div> }</div><div> sort();</div><div> generate();</div><div>}</div><div>function handleLiChildren(resultString){</div><div> var htmlDom = $(resultString);</div><div> var liChildren = $("li", htmlDom);</div><div> $.each( liChildren, function(i, value) {</div><div>  // if( value.className.indexOf("nav_item") != -1 )</div><div>  if( value.className)</div><div>   return true;</div><div>  if( value.innerText == "我回复的" || value.innerText == "我的精品")</div><div>   return true;</div><div>  var detail = parseDetail(value);</div><div>  insertPost(detail);</div><div> });</div><div>}</div><div>/*</div><div><ul></div><div> <li></div><div>  <cite>2016</cite></div><div>   <a href="/f?kw=%E5%A4%A7%E9%82%91" >尿素氮</a></div><div> </li></div><div> <li></div><div>  <cite>2015</cite></div><div>   <a href="/f?kw=%E5%A4%A7%E9%82%91" >尿素氮2</a></div><div> </li></div><div></ul></div><div>*/</div><div>function getpostSource(post) {</div><div> var source = "<li><cite>";</div><div> source += post.date + "/<cite>";</div><div> source += '<a href="' + post.url + '">' + post.postTitle + "</a></li>";</div><div> return source;  </div><div>}</div><div>function getBarPostsSource(barName, posts) {</div><div> var source = '<h1>' + barName + ': ' + posts.length + '个</h1>';</div><div> source += "<ul>";</div><div> for( var i = 0; i < posts.length; i++){</div><div>  var post = posts[i];</div><div>  source += getpostSource(post);</div><div> }</div><div> source += "</ul>";</div><div> return source;</div><div>}</div><div>function sortNumber(a,b){</div><div> return b.size - a.size;  </div><div>}</div><div>function sort() {</div><div> for( barName in POST) {</div><div>  if( !POST.hasOwnProperty(barName))</div><div>   continue;</div><div>  var post = {</div><div>   name: barName,</div><div>   size: POST[barName].length</div><div>  };</div><div>  SORTED.push(post);</div><div> }</div><div> SORTED.sort(sortNumber);</div><div>}</div><div>function generate(){</div><div> var div = document.getElementById("container");</div><div> var source = "总共帖子: " + TOTAL + "个";</div><div> for( var i = 0; i < SORTED.length; i++){</div><div>  var posts = POST[SORTED[i].name];</div><div>  source += getBarPostsSource(SORTED[i].name, posts);</div><div> }</div><div> div.innerHTML = source;</div><div>}</div><div>$(function(){  </div><div> main();</div><div>});  </div><div>function getPostByAJAX(requestURL){</div><div>   var html = $.ajax({</div><div>   url: requestURL,</div><div>   xhrFields: {</div><div>    // The 'xhrFields' property sets additional fields on the XMLHttpRequest.</div><div>    // This can be used to set the 'withCredentials' property.</div><div>    // Set the value to 'true' if you'd like to pass cookies to the server.</div><div>    // If this is enabled, your server must respond with the header</div><div>    // 'Access-Control-Allow-Credentials: true'.</div><div>    withCredentials: true</div><div>  },</div><div>   async: false}).responseText;  </div><div>   debugger;</div><div>   return html;</div><div>}</div><div>/*</div><div>function getPostByAJAX(requestURL){</div><div> var settings = {</div><div>        type: "GET",</div><div>        crossOrigin: true,</div><div>        url:requestURL,</div><div>        error: function(XHR,textStatus,errorThrown) {</div><div>            alert ("XHR="+XHR+"\ntextStatus="+textStatus+"\nerrorThrown=" + errorThrown);</div><div>        },</div><div>        success: function(data,textStatus) {</div><div>            debugger;</div><div>        },</div><div>        headers: {</div><div>            "Access-Control-Allow-Origin":"http://tieba.baidu.com",</div><div>            "Access-Control-Allow-Headers":"X-Requested-With"</div><div>        }</div><div>    };</div><div>    $.ajax(settings);</div><div>}</div><div>*/</div><div>/*</div><div>function getPostByAJAX(requestURL){</div><div>   var html = $.ajax({</div><div>   url: requestURL,</div><div>   dataType:"jsonp",</div><div>   xhrFields: {</div><div>    // The 'xhrFields' property sets additional fields on the XMLHttpRequest.</div><div>    // This can be used to set the 'withCredentials' property.</div><div>    // Set the value to 'true' if you'd like to pass cookies to the server.</div><div>    // If this is enabled, your server must respond with the header</div><div>    // 'Access-Control-Allow-Credentials: true'.</div><div>    withCredentials: true</div><div>  },</div><div>   async: false}).responseText;  </div><div>   return html;</div><div>}</div><div>*/</div><div>function insertPost(postDetail){</div><div> if( !POST[postDetail.barName]){</div><div>  POST[postDetail.barName] = [];</div><div> }</div><div> POST[postDetail.barName].push(postDetail);</div><div>}</div><div>function parseDetail(liNode) {</div><div> var cite = $("cite", liNode);</div><div> var date = cite[0].innerHTML; // value1</div><div> var tds = $("td", liNode);</div><div> var a1 = $("a", tds[0]);</div><div> var barName = a1[0].innerHTML; // value2</div><div> var a2 = $("a", tds[1]);</div><div> var postTitle = a2[0].innerHTML; // value3</div><div> var url = PREFIX + a2.attr("href");</div><div> return {</div><div>  date: date,</div><div>  barName: barName,</div><div>  postTitle: postTitle,</div><div>  url: url</div><div> }</div><div>}</div><div>function getTestData(){</div><div> return '<!DOCTYPE html><html><body><div class="wrap1"><div class="wrap2"><div ' +  </div><div> ' id="main_wrapper" class="main_wrapper"><div id="main_back_img"><div ' +  </div><div> ' id="main_back_bottom"><div id="container" class="ibody clearfix"><div><div ' +  </div><div> ' id="content"><div class="simple_block_container"><ul><li><cite>2-16</cite>' +  </div><div>    '<div class="wrap_container"><table><tr><td class="nowrap">在<a style="" ' +</div><div>    ' href="/f?kw=%E5%A4%A7%E9%82%91" target="_blank">ANDROID吧</a> 发贴</td><td class="wrap">' +  </div><div>    '<a href="/p/4356641476?pid=84106363194&amp;cid=0#841063631" class="thread_title"  target="_blank">硬盘</a></td>' +</div><div> '</tr></table></div><div class="clear"></div></li>' +  </div><div>    '<li></li><li></li></ul></div></div></div></div></div></div></div></div></body></html>';</div><div>}</div><div>


目录
相关文章
|
3月前
|
存储 Cloud Native Docker
百度搜索:蓝易云【云原生之使用Docker部署Notepad个人任务管理工具】
这样,你就成功地使用Docker部署了Notepad个人任务管理工具。通过Docker部署Notepad可以使应用的安装和配置更加便捷,并且可以隔离应用环境,避免影响到宿主机的系统。希望以上教程对你有所帮助!如果你有其他问题,请随时继续提问。
56 0
|
4月前
|
Devops 网络安全 Docker
百度搜索:蓝易云【DevOps系列文章之Docker部署web ssh工具sshwifty教程。】
同时,了解DevOps和Docker的基本原理和概念也对你进行部署和管理这样的工具非常有帮助。你可以进一步研究Docker容器化技术和相关的DevOps实践,以更好地理解和应用这些概念。
55 0
|
5月前
|
Java
百度搜索:蓝易云【hutool Http 工具发送POST请求的几种方式。】
以上是使用Hutool发送POST请求的几种方式。根据实际需求和代码复杂度,选择合适的方式来发送POST请求。
177 0
|
6月前
|
NoSQL 关系型数据库 MySQL
百度搜索:蓝易云 ,【Linux工具】-yum/gdb使用教程!
这些是yum和gdb的基本使用教程。希望对您有所帮助!请注意,这只是一个简要概述,这些工具具有更多功能和选项,您可以查阅相关的文档和资料以获取更详细的信息和指导。
59 0
|
7月前
|
缓存 NoSQL Linux
百度搜索:蓝易云【【Linux工具】yum和gdb详细使用教程。】
以上是 yum 和 gdb 的简单使用教程。使用这些工具可以方便地进行软件包管理和程序调试。如需了解更多命令和功能,请参考它们的官方文档或使用相应的帮助命令。
591 0
|
6月前
|
Linux
百度搜索:蓝易云【如何在Linux系统安装文件同步工具:FreeFileSync?】
请注意,具体安装步骤可能会因不同的Linux发行版而有所差异。如果遇到任何问题,建议查阅FreeFileSync的官方文档或论坛,其中可能会提供更详细的安装说明和支持信息。
81 3
|
3月前
|
监控 Ubuntu
百度搜索:蓝易云【如何使用各种工具和命令来检查Ubuntu中的CPU使用情况?】
这些工具和命令可以帮助你实时监控和检查Ubuntu系统中的CPU使用情况。你可以根据需要选择合适的工具来查看CPU使用情况,并根据情况采取相应的措施来优化系统性能。
58 1
|
3月前
|
传感器 监控 自动驾驶
百度Apollo :自动驾驶全新工具Dreamview+,便捷灵活更丰富
百度Apollo :自动驾驶全新工具Dreamview+,便捷灵活更丰富
30 0
|
4月前
|
数据可视化 开发工具 git
Git【实践 01】使用Git工具托管本地代码到GitHub简单易懂的图文教程(含Git+第三方工具TortoiseGit+中文语言包百度云盘资源)
Git【实践 01】使用Git工具托管本地代码到GitHub简单易懂的图文教程(含Git+第三方工具TortoiseGit+中文语言包百度云盘资源)
50 0
|
4月前
|
Shell Windows
Windows【工具 03】QuickLook-3.6.11安装并设置开机自启动(含较难下载的 QuickLook-3.6.11 安装包百度云盘资源)
Windows【工具 03】QuickLook-3.6.11安装并设置开机自启动(含较难下载的 QuickLook-3.6.11 安装包百度云盘资源)
58 0