关闭

遍历CSDN博客

519人阅读 评论(0) 收藏 举报
分类:
--http://blog.csdn.net/leixiaohua1020/article/list/14?viewmode=contents

function saveData(data)
	local file = io.open("temp.html", "w")
	file:write(data)
	file:close()
end

function getPageCount(url)
	local http = require("socket.http")
	local resp = http.request(url)
	local s = string.find(resp, "<div id=\"papelist\" class=\"pagelist\">")
	local e = string.find(resp, "</div>", s)
	local divData = string.sub(resp, s, e + 5)
	--print(divData)
	local i, j = string.find(divData, "共%d+页")
	local pageCount = string.sub(divData, i + 3, j - 3)
	return pageCount
end

function getTitles(username)
	if(username == nil or username == "") then
		print("username is nil")
		return
	end
	local preUrl = "http://blog.csdn.net/"
	local endUrl = "?viewmode=contents"
	local url = preUrl .. username .. endUrl
	local pageCount = getPageCount(url)
	for i = 1, pageCount do
		local blogUrl = preUrl .. username .. "/article/list/" .. i .. endUrl
		local http = require("socket.http")
		local resp = http.request(blogUrl)
		local pos = 1
		_, pos = string.find(resp, "link_title", pos)
		while(pos ~= nil) do
			local i, j = string.find(resp, "details/%d+\">", pos)
			--print("pageid = " ..  string.sub(resp, i + 8, j - 2))
			local k, _ = string.find(resp, "</a></span>", j)
			print(string.sub(resp, j + 11, k - 23))
			_, pos = string.find(resp, "link_title", pos)
		end
	end
end

getTitles("leixiaohua1020")


	



如果想保存一篇指定的博文(只要正文),该怎么做呢?

其实只要我们预先保存下博文的js、css和一些控制正文的html标记,然后把正文内容填充进去就可以了。

以下lua脚本可以获得

<div id="article_content" class="article_content">
正文
</div>


start.html

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="http://static.blog.csdn.net/scripts/jquery.js" type="text/javascript"></script>
    <link rel="Stylesheet" type="text/css" href="http://static.blog.csdn.net/skin/skin-blue/css/style.css?v=1.1" />
    <link rel="shortcut icon" href="http://c.csdnimg.cn/public/favicon.ico" />
    <link type="text/css" rel="stylesheet" href="http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/default.css" />
</head>
<body>
<div id="container">
<script type="text/javascript">
    var username = "x_iya";
    var _blogger = username;
    var blog_address = "http://blog.csdn.net/x_iya";
    var static_host = "http://static.blog.csdn.net";
    var currentUserName = "";  
</script>
<div id="body">
<div id="main">
<div class="main">
<div id="article_details" class="details">

end.html

</div>                 
</div>
</div>
<script type="text/javascript" src="http://static.blog.csdn.net/scripts/newblog.min.js"></script>
</div>
</body>
</html> 


lua代码:

function GetHtml(url)
	local http = require("socket.http")
	local resp = http.request(url)
	local s = string.find(resp, "<div id=\"article_content\" class=\"article_content\">")
	local e = string.find(resp, "<!--", s)
	local data = string.sub(resp, s, e - 1)
	return data
end

function SaveData(data)
	local file = io.open("csdn.html", "w")
	file:write(data)
	file:close()
end

function ReadData(filepath)
	local file = io.open(filepath, "r")
	local data = file:read("*a")
	file:close()
	return data
end

--local url = "http://blog.csdn.net/x_iya/article/details/52327827"

if #arg == 1 then
	local url = arg[1]
	local startData = ReadData("start.html")
	local endData = ReadData("end.html")
	local html = startData .. GetHtml(url) .. endData
	SaveData(html)
else
	print("Usage: lua csdn.lua url")
end




0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

二叉树的前中后序遍历,递归和非递归方式

解决二叉树的很多问题的方案都是基于对二叉树的遍历。遍历二叉树的前序,中序,后序三大方法算是计算机科班学生必写代码了。其递归遍历是人人都能信手拈来,可是在手生时写出非递归遍历恐非易事。正因为并非易事,所以网上出现无数的介绍二叉树非递归遍历方法的文章。可是大家需要的真是那些非递归遍历代码和讲述吗?代码早...
  • Hk_john
  • Hk_john
  • 2017-04-10 19:34
  • 189

我的CSDN博客

作为一名C++初学者加自学者,感觉到了学习上的艰辛,但是既然决定了要学,那么就不要放弃!自学也是一种学,花了时间,努力了,就会有收获的。开一个博客,记录自己的学习历程,把自己做过的东西,感悟的东西写下来,当做是对自己学习的一种总结,也作为对自己时时刻刻进行勉励的一个小平台。   ...
  • u011894560
  • u011894560
  • 2013-09-11 15:32
  • 704

csdn的博客如何转载博客

文章转自:http://blog.csdn.net/jiangping_zhu/article/details/18044109 1、找到要转载的文章,用chrome浏览器打开,右键选择审查元素 2、在chrome中下方的框里找到对应的内容,html脚本中找到对应的节点,选中节点,网页上被选...
  • u012987546
  • u012987546
  • 2016-07-27 10:18
  • 352

我的CSDN博客

首先,本人虽然是 计算机科学与技术 专业出身,但是在毕业求职时选择的第一份工作并非计算机相关工作,而且本人平时对很多杂七杂八的东西感兴趣,所以博客作为一种文字积累工具,我不认为我会在此专一地写计算机相关的东西。为什么选CSDN博客申请博客的想法很早就有,但是感觉自己可能没什么可写的,想了想就罢了。这...
  • xmousez
  • xmousez
  • 2016-10-17 15:51
  • 384

CSDN的博客积分计算规则及博客排名规则 csdn博客计分原则 CSDN博客排名规则

CSDN的博客积分计算规则及博客排名规则 分类: 生活杂谈2013-02-04 17:52 1018人阅读 评论(20) 收藏 举报   最近对CSDN博客积分的计算规则比较疑惑,并看到CSDN的一篇博客《cs...
  • u013017597
  • u013017597
  • 2014-06-07 16:50
  • 380

CSDN工具-CSDN博客登陆

不知道这篇博文能不能发表出去,用第三方的软件登陆CSDN会不会被和谐。 好吧,这是一款本地端登陆CSDN博客的小软件。 软件有两个窗体,一个是登陆窗体,一个是浏览器窗体,使用了webbrowser组件。 首先,打开软件: 在输入框中输入CSDN的用户名和密码,点击登陆将进行自动登陆。...
  • mayuko2012
  • mayuko2012
  • 2015-03-01 15:54
  • 595

CSDN 博客,程序员最爱的博客

   经营CSDN博客刚满一年,可以说CSDN给我们带来了很大的帮助,这一年里CSDN见证了我们的成长。下面两篇博客就是我这一年在CSDN的缩影。   这篇是我一年前写的,那时候刚申请CSDN不久:http://blog.csdn.net/u01092...
  • jinlaigu
  • jinlaigu
  • 2014-08-18 09:35
  • 542

从CSDN博客到独立博客的蜕变

近日受到CSDN博客运营[密斯大白](http://blog.csdn.net/baiyuzhong2012)的邀请,他希望我能以CSDN博客专家的身份写一篇探讨CSDN博客和独立博客各自优劣的文章,因此就有了今天这篇文章,本文从我作为一名CSDN博客专家的角度阐述博客作者们在面临托管博客和独立博客...
  • qinyuanpei
  • qinyuanpei
  • 2015-06-27 12:21
  • 3463

今天我成为了CSDN博客专家

刚刚收到了来自CSDN的回复,正如我的期待: 尊敬的用户happydeer:您好!您的CSDN博客专家身份已添加。如果有问题请随时与我们联系。感谢您对CSDN博客的支持和贡献!CSDN博客管理员www.csdn.net 我随即回到自己的博客页面,欣喜地看到“专家”徽标被点亮了。Y...
  • happydeer
  • happydeer
  • 2014-01-16 15:01
  • 6141

如何快速转载CSDN中的博客

前言  对于喜欢逛CSDN的人来说,看别人的博客确实能够对自己有不小的提高,有时候看到特别好的博客想转载下载,但是不能一个字一个字的敲了,这时候我们就想快速转载别人的博客,把别人的博客移到自己的空间里面,当然有人会说我们可以收藏博客啊,就不需要转载,(⊙o⊙)… 也对。。实现  因为我自己当初想转载...
  • bolu1234
  • bolu1234
  • 2016-07-09 15:59
  • 12235
    个人资料
    • 访问:1011986次
    • 积分:18269
    • 等级:
    • 排名:第598名
    • 原创:689篇
    • 转载:427篇
    • 译文:3篇
    • 评论:142条
    总有一天你将破蛹而出,成长得比人们期待的还要美丽。
    但这个过程会很痛,会很辛苦,有时候还会觉得灰心。
    面对着汹涌而来的现实,觉得自己渺小无力。
    但这,也是生命的一部分。做好现在你能做的,然后,一切都会好的。
    我们都将孤独地长大,不要害怕。

    —— 寂地《踮脚张望的时光》
    博客专栏
    最新评论