--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

遍历CSDN博客的更多相关文章

  1. 【转】Android Building System 总结 - 一醉千年 - CSDN博客

    原文网址:http://www.360doc.com/content/15/0314/23/1709014_455175716.shtml  Android Building System 总结 收藏 ...

  2. Python爬取CSDN博客文章

    0 url :http://blog.csdn.net/youyou1543724847/article/details/52818339Redis一点基础的东西目录 1.基础底层数据结构 2.win ...

  3. Android应用开发-小巫CSDN博客clientJsoup篇

    Android应用开发-小巫CSDN博客clientJsoup篇 距上一篇博客已经过去了两个星期,小巫也认为很抱歉,由于在忙着做另外一个项目,差点儿抽不出空来,这不小巫会把剩下的博文全部在国庆补上.本 ...

  4. PHP採集CSDN博客边栏的阅读排行

    项目中要用到採集的数据,所以就先拿CSDN博客来试了试.这里使用Simple HTML DOM(官网)这个库,它可以方便的遍历HTML文档. <?php include_once('simple ...

  5. Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客

    ==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...

  6. Python爬虫简单实现CSDN博客文章标题列表

    Python爬虫简单实现CSDN博客文章标题列表 操作步骤: 分析接口,怎么获取数据? 模拟接口,尝试提取数据 封装接口函数,实现函数调用. 1.分析接口 打开Chrome浏览器,开启开发者工具(F1 ...

  7. 神一样的CSDN博客排名规则

    本文转载于:http://blog.csdn.net/littletigerat/article/details/17448521 神一样的CSDN博客排名规则 一.引言 年. 马年CSDN博客,毫无 ...

  8. 梦想还是要有的-纪念正式成为csdn博客专家暨年中总结

    csdn博客:http://blog.csdn.net/tuzongxun 我的csdn历程(坚持总会有收获):   一年零三个月之前,2015年3月3日,我在csdn写下第一篇技术博客,只是记录了一 ...

  9. 从csdn博客搬家过来,请多关照!

    之前一直在csdn博客,也写了不少关于java的文章,主要是学习java上的一些问题.想通过这种方式来加深对问题的认知,同时也可以帮助到志同道合的人,一起在编程的道路上共进,共勉.

随机推荐

  1. 从桌面到 Web - 二十几天学 ASP.NETCore 1

    这么多年一直从事桌面开发,一直没有时间好好学学  web 开发.感觉自己就像从石器时代走来的古代类人猿.由于工作的调整,现在终于有时间学习一下 Web 开发.出于对技术和框架的熟悉和继承,决定还是学习 ...

  2. Tomcat启动失败原因

    Tomcat启动失败原因 一.Tomcat启动时,要求被加载的项目必须拥有独立路径名称 发布的两个工程具有相同路径名称,这是不允许. 二.8080端口号已经被占用了 启动失败原因,就是8085端口上, ...

  3. 解决 Table ‘performance_schema.session_variables’ doesn’t exist 问题

    performance_schema在mysql5.5以上就有自带 performance_schema(安装数据库时自带的)如果装数据库或者使用数据时不小心删除了,就会出现Table‘perform ...

  4. 2018铁人三项测评题 IOS99

    下面这一部分是我从网上复制过来的, 2.IOS 解题链接:http://ctf4.shiyanbar.com/web/IOS/index.php 这题页面中提示系统升级到了IOS99,我们可以想到修改 ...

  5. [小技巧] Windows 命令行显示英文

    在 Windows 里 " 运行" 使用 cmd 进行命令行, 如果是Windows 中文版的话,里面的命令输出是中文. 如果要显示英文的话,可以使用如下的命令: chcp 437 ...

  6. 【转】[ppurl]从”皮皮书屋”下载电子书的姿势

    转:http://blog.csdn.net/hcbbt/article/details/42072545 写在前面的扯皮 为什么标题的”皮皮书屋”加上了引号,因为皮皮书屋(http://www.pp ...

  7. VScode(一):C/C++ & MinGW & Code Runner

    目录 1 VScode配置安装 2 MinGW配置安装 2.1 MinGW下载安装 2.2 MinGW环境配置 3 VScode编译C/C++ 3.1 扩展插件安装 3.2 项目配置 3.2.1 配置 ...

  8. 使用WebUploader上传HTML文件并读取文件

    需求: 前端需要上传HTML文件并识别里面有多少个特殊标签并录入到数据库. 思路: 使用WebUploader上传文件,然后使用FileReader接口和DOMParser识别HTML中的特殊标签 资 ...

  9. 【转】利用Eclipse编辑中文资源文件(application_zh_CN.properties )

    既然生为中国人,就没有什么好抱怨的了,遇到编码的问题,那只有解决它了. 如果经常使用Struts,并做过国际化操作的人来说,对于中文资源文件的处理应该不会感到陌生的.比如下面两个文件,一个是英文的,一 ...

  10. 抽象工厂模式(C++)

    #include <iostream> using namespace std; class Fruit { public: ; }; class AbstractFactory { pu ...