自己动手编写CSDN博客备份工具-blogspider
程序员文章站
2022-05-19 20:27:46
...
作者:gzshun. 原创作品,转载请标明出处!
来源:http://blog.csdn.net/gzshun
网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁,自动索引,模拟程序或者蠕虫。
网络爬虫最重要的任务,就是从互联网搜索出需要的信息,将网页抓取下来并分析,很多搜索引擎,比如百度,谷歌,后台都有一只很强悍的网络爬虫,用来访问互联网上的网页,图片,视频等内容,并建立索引数据库,使用户能在百度搜索引擎中搜索到您网站的网页、图片、视频等内容。
我们常见的几个大型搜索引擎公司的爬虫名称:
1.谷歌(Google) -> Googlebot
2.百度(Baidu)爬虫名称:Baiduspider
3.雅虎(Yahoo) -> Yahoo! Slurp
4.有道(Yodao) -> YodaoBot
5.搜狗(sogou) -> Sogou spider
6.MSN -> msmbot
7.腾讯搜搜 -> Sosospider
最近我突然想自己动手写一只小型的博客爬虫,将自己在CSDN博客网站写的文章给抓取下来,想做个博客备份工具。当了解到网络爬虫的用途后,就来动手实现一个应用,用来备份自己在CSDN的博客,这样即使没有网络,或者文章丢失了,我手头都有一个备份。记得上次在微博看过CSDN创始人蒋涛先生说的一句话,他想做一个CSDN博客生成PDF文档的工具,其实那也相当于对自己博客的备份,这样就能很方便的浏览自己的写的文章。
我写的这个"blogspider"程序,将会把自己博客信息提取出来,并将所有的文章下载到本地。这里只是简单的下载网页而已,里面的图片我没有下载,那得涉及到太多的东西。如果电脑有网络,将会很容易的看到博客里面的图片,如果没有网络,图片将无法显示。
blogspider程序由C语言编写的,基于Linux平台,我编写该程序的环境如下:
1.获取博客的基本信息:
博客标题
博客访问量
博客积分
博客排名
博客原创文章数量
博客转载文章数量
博客译文文章数量
博客评论数量
2.下载博客到本地:
博客主题
博客发表日期
博客阅读次数
博客评论次数
二.blogspider涉及到的知识点:
1.文件I/O
2.网络编程socket
3.数据结构-链表
4.内存分配
三.blogspider程序执行流程:
以我的博客为例:
1.将"http://blog.csdn.net/gzshun"主页下载到本地
2.分析该主页,获取到博客的URL
3.将博客的URL添加到爬虫链表
4.遍历爬虫链表,将博客下载到本地
5.将下载日志保存在gzshun.log
四.blogspider程序的重要部分:
2.博客基本信息结构体
3.定义的函数
4.strrstr是自己实现的,C库没有提供
5.初始化爬虫链表
6.初始化博客基本信息结构体
五.blogspider遇到的问题:
1.博客标题如果有'/','?',或者其他不规则的符号,文件将会创建失败。
解决方案:将不规则的符号赋空,并在后面连接"xxx"字符串,表示省略;
2.在接受网站服务器响应的时候,要将select函数的时间设置长点,有时候因为网络差的问题,将会超时导致退出程序。在blogspider里面,将timeout设置30s。
3.本程序在考虑加入多线程遍历爬虫链表,经过尝试,连接网站服务器会出现竞争问题,将导致连接延时,影响程序效率,暂时不考虑。
六.blogspider运行截图:
自己动手编写CSDN博客备份工具-blogspider源码下载(4)
来源:http://blog.csdn.net/gzshun
网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁,自动索引,模拟程序或者蠕虫。
网络爬虫最重要的任务,就是从互联网搜索出需要的信息,将网页抓取下来并分析,很多搜索引擎,比如百度,谷歌,后台都有一只很强悍的网络爬虫,用来访问互联网上的网页,图片,视频等内容,并建立索引数据库,使用户能在百度搜索引擎中搜索到您网站的网页、图片、视频等内容。
我们常见的几个大型搜索引擎公司的爬虫名称:
1.谷歌(Google) -> Googlebot
2.百度(Baidu)爬虫名称:Baiduspider
3.雅虎(Yahoo) -> Yahoo! Slurp
4.有道(Yodao) -> YodaoBot
5.搜狗(sogou) -> Sogou spider
6.MSN -> msmbot
7.腾讯搜搜 -> Sosospider
最近我突然想自己动手写一只小型的博客爬虫,将自己在CSDN博客网站写的文章给抓取下来,想做个博客备份工具。当了解到网络爬虫的用途后,就来动手实现一个应用,用来备份自己在CSDN的博客,这样即使没有网络,或者文章丢失了,我手头都有一个备份。记得上次在微博看过CSDN创始人蒋涛先生说的一句话,他想做一个CSDN博客生成PDF文档的工具,其实那也相当于对自己博客的备份,这样就能很方便的浏览自己的写的文章。
我写的这个"blogspider"程序,将会把自己博客信息提取出来,并将所有的文章下载到本地。这里只是简单的下载网页而已,里面的图片我没有下载,那得涉及到太多的东西。如果电脑有网络,将会很容易的看到博客里面的图片,如果没有网络,图片将无法显示。
blogspider程序由C语言编写的,基于Linux平台,我编写该程序的环境如下:
本人在putty终端测试程序,可以正确的显示中文,要设置为UTF-8,或者GB2312,如果显示乱码,切换一下字符集试试。
1.获取博客的基本信息:
博客标题
博客访问量
博客积分
博客排名
博客原创文章数量
博客转载文章数量
博客译文文章数量
博客评论数量
2.下载博客到本地:
博客主题
博客发表日期
博客阅读次数
博客评论次数
二.blogspider涉及到的知识点:
1.文件I/O
2.网络编程socket
3.数据结构-链表
4.内存分配
三.blogspider程序执行流程:
以我的博客为例:
1.将"http://blog.csdn.net/gzshun"主页下载到本地
2.分析该主页,获取到博客的URL
3.将博客的URL添加到爬虫链表
4.遍历爬虫链表,将博客下载到本地
5.将下载日志保存在gzshun.log
四.blogspider程序的重要部分:
1.爬虫链表的结构体
2.博客基本信息结构体
3.定义的函数
4.strrstr是自己实现的,C库没有提供
1.strrstr函数:从一个字符串中查找指定字符串,返回最后一次出现的地址
程序如下:
5.初始化爬虫链表
6.初始化博客基本信息结构体
五.blogspider遇到的问题:
1.博客标题如果有'/','?',或者其他不规则的符号,文件将会创建失败。
解决方案:将不规则的符号赋空,并在后面连接"xxx"字符串,表示省略;
2.在接受网站服务器响应的时候,要将select函数的时间设置长点,有时候因为网络差的问题,将会超时导致退出程序。在blogspider里面,将timeout设置30s。
3.本程序在考虑加入多线程遍历爬虫链表,经过尝试,连接网站服务器会出现竞争问题,将导致连接延时,影响程序效率,暂时不考虑。
六.blogspider运行截图:
使用blogspider:
这里以下载我的博客为例,我CSDN的ID是:gzshun, 网址是:http://blog.csdn.net/gzshun
title : 博客标题
url : 博客网址
date : 博客发表日期
reads : 博客阅读次数
comments : 博客评论次数
download : 博客下载状态
以下这张图片是在windows查看的,通过samba连接到ubuntu服务器。我博客上面的所有文章已经成功地下载到本地。
打开下载在本地的html文件,此时有网络。
打开下载在本地的html文件,此时无网络。
若需要blogspider的源程序,请留下您的E-mail(注意要写成我后面的那种形式,否则会被非法网络爬虫抓取),或者直接联系我的E-mail:gzshuns#163.com (#->@).
最新的blogspider程序已经上传至CSDN下载频道,需要的请自行下载。
下载地址在我最新发表的博客:
上一篇: 如何编写一个完整的Linux命令
下一篇: 北漂族一票难求
推荐阅读
-
自己动手编写CSDN博客备份工具-blogspider
-
自己动手编写CSDN博客备份工具-blogspider之源码分析(1)
-
自己动手编写CSDN博客备份工具-blogspider源码下载(4)
-
自己动手编写CSDN博客备份工具-blogspider之源码分析(3)
-
自己动手编写CSDN博客备份工具-blogspider源码下载(4)
-
自己动手编写CSDN博客备份工具-blogspider之源码分析(2)
-
自己动手编写CSDN博客备份工具-blogspider之源码分析(1)
-
自己动手编写CSDN博客备份工具-blogspider
-
自己动手编写CSDN博客备份工具-blogspider之源码分析(3)
-
自己动手编写CSDN博客备份工具-blogspider之源码分析(2)