遍历CSDN博客
--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博客的更多相关文章
- 【转】Android Building System 总结 - 一醉千年 - CSDN博客
原文网址:http://www.360doc.com/content/15/0314/23/1709014_455175716.shtml Android Building System 总结 收藏 ...
- Python爬取CSDN博客文章
0 url :http://blog.csdn.net/youyou1543724847/article/details/52818339Redis一点基础的东西目录 1.基础底层数据结构 2.win ...
- Android应用开发-小巫CSDN博客clientJsoup篇
Android应用开发-小巫CSDN博客clientJsoup篇 距上一篇博客已经过去了两个星期,小巫也认为很抱歉,由于在忙着做另外一个项目,差点儿抽不出空来,这不小巫会把剩下的博文全部在国庆补上.本 ...
- PHP採集CSDN博客边栏的阅读排行
项目中要用到採集的数据,所以就先拿CSDN博客来试了试.这里使用Simple HTML DOM(官网)这个库,它可以方便的遍历HTML文档. <?php include_once('simple ...
- Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客
==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...
- Python爬虫简单实现CSDN博客文章标题列表
Python爬虫简单实现CSDN博客文章标题列表 操作步骤: 分析接口,怎么获取数据? 模拟接口,尝试提取数据 封装接口函数,实现函数调用. 1.分析接口 打开Chrome浏览器,开启开发者工具(F1 ...
- 神一样的CSDN博客排名规则
本文转载于:http://blog.csdn.net/littletigerat/article/details/17448521 神一样的CSDN博客排名规则 一.引言 年. 马年CSDN博客,毫无 ...
- 梦想还是要有的-纪念正式成为csdn博客专家暨年中总结
csdn博客:http://blog.csdn.net/tuzongxun 我的csdn历程(坚持总会有收获): 一年零三个月之前,2015年3月3日,我在csdn写下第一篇技术博客,只是记录了一 ...
- 从csdn博客搬家过来,请多关照!
之前一直在csdn博客,也写了不少关于java的文章,主要是学习java上的一些问题.想通过这种方式来加深对问题的认知,同时也可以帮助到志同道合的人,一起在编程的道路上共进,共勉.
随机推荐
- linux权限说明
Linux 中的权限 这里我拿一个tomcat目录举例说明.首先我们在linux系统中执行命令:ls -l 我们拿出其中一个说明-rwxr-xr-x,在Linux 系统中权限是区分用户的,即用户.组用 ...
- SpringBoot系列之集成Dubbo示例教程
一.分布式基本理论 1.1.分布式基本定义 <分布式系统原理与范型>定义: "分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统" 分布式系统(d ...
- 「Main」
这里就是我的小主页辣. My Introduction I am Louch. 姓名:楼翰诚 性别:汉纸 生日:2004/03/09(和加加林同一天呢QAQ) 星座:双鱼座 学校:义乌中学 QQ:10 ...
- 「HDU3823」 Prime Friend 解题报告
Prime Friend Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- asp.net core 实现支持多语言
asp.net core 实现支持多语言 Intro 最近有一个外国友人通过邮件联系我,想用我的活动室预约,但是还没支持多语言,基本上都是写死的中文,所以最近想支持一下更多语言,于是有了多语言方面的一 ...
- 【python小随笔】将一个列表的值,分成10个一组,遍历的时候每10个遍历一次
t = ['B071LF9R6G', 'B0714BP3H4', 'B0756FL8R7', 'B072HX95ZR', 'B07CX389LX', 'B07D9MZ7BD', 'B07D9L15L5 ...
- Spring 框架学习(1)--Spring、Spring MVC扫盲
纸上得来终觉浅,绝知此事要躬行 文章大纲 什么是spring 传统Java web应用架构 更强的Java Web应用架构--MVC框架 Spring--粘合式框架 spring的内涵 spring核 ...
- cogs 495. 滑动窗口 单调队列
495. 滑动窗口 ★★ 输入文件:window.in 输出文件:window.out 简单对比时间限制:2 s 内存限制:256 MB [问题描述] 给你一个长度为N的数组,一个长为 ...
- AVR单片机教程——串口发送
本文隶属于AVR单片机教程系列. 到目前为止,我们的开发板只能处理很小量的数据:读取几个引脚电平,输出几个LED,顶多用数码管显示一个两位数字.至于输入一个指令.输出一条调试信息,甚至用scanf ...
- JS 点击验证码刷新
<img src="/get_valid_img" id="valid-img" title="点击再换一张" class=" ...