`
shangjava
  • 浏览: 1229142 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

自己动手编写CSDN博客备份工具-blogspider之源码分析(3)

 
阅读更多

作者:gzshun. 原创作品,转载请标明出处!
来源:
http://blog.csdn.net/gzshun

周星驰:剪头发不应该看别人怎么剪就发神经跟流行,要配合啊!你看你的发型,完全不配合你的脸型脸型又不配合身型,身型又和发型完全不搭,而且极度不配合啊!!欢哥!你究竟要怎么样啊? 《算死草》

在开篇,先happy下,新年到,开开心心过好年!
已经写了几篇文章,把代码贡献给有需要的人,这里列出前几篇文章,需要的马上跳转,麻利的。。
自己动手编写CSDN博客备份工具-blogspider

自己动手编写CSDN博客备份工具-blogspider之源码分析(1)

自己动手编写CSDN博客备份工具-blogspider之源码分析(2)

本文是blogspider最重要的部分,开始要下载并分析CSDN博客,把博文的URL分析出来,添加进链表,GO!

一.先下载博客主页到本地的index.html

下载网页到本地的步骤:
建立连接 -> 连接网站服务器 -> 发送请求 -> 接收响应 -> 保存到本地
connect_web -> send_request -> recv_response
源码说话:

二.建立连接,并连接网站服务器

先从"blog.csdn.net"主机名获取到IP地址,如下:


开始初始化套接字,连接网站服务器:


三.发送请求到网站服务器

HTTP协议里面比较重要的有俩方法:GETPOST
向网站服务器发送请求:
GET %s HTTP/1.1\r\n
Accept: */*\r\n
Accept-Language: zh-cn\r\n
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)\r\n
Host: %s:%d\r\n
Connection: Close\r\n\r\n
GET后面跟的是请求的文件,剩下的是一些基本信息,该协议头的结束标志是一个空行,所以程序可以通过判断"\r\n\r\n"为结束标志。具体HTTP协议可以上网搜索一些资料,这里不做介绍。

源码说话:


周星驰:扫地只不过是我的表面工作,我真正地身份是一位研究僧(生)。《少林足球》
轻松一下,继续。。。

四.接收响应消息

向网站服务器发送了请求,当然必须在本地开始接收。由于可能是网速慢的原因,接收响应消息与消息正体速度有点慢。这里使用了select函数与FD_SET集合来处理,当监听到socket可读,才开始读取消息并保存到本地。


五.获取CSDN博客的URL,与博客的发表日期,阅读次数,评论次数,并添加进爬虫链表


代码本身已经注释得很清楚了,看注释就够了。HTTP协议涉及到很多知识点,有空可以写写程序来练练手,blogspider效率上还是不够高,有空添加线程处理,同时下载多个博客,这样才能提高效率。

需要blogspider的源代码,可以留下E-mail

分享到:
评论

相关推荐

    CSDN博客备份工具-blogspider_v2.0.tar.bz2

    CSDN博客备份工具blogspider,可以备份自己所有的CSDN博客到本地,也可以备份别人的博客。若需要保存别人的技术博客或自己的问题,blogspider可以帮你达到目的。若blogspider程序出现问题,可以关注我的CSDN博客,...

    CSDN博客下载器v2.2

    好消息:CSDN博客下载器v2.0版本增加导出PDF文件功能,方便查看图片与文章。 在无网络环境,也可以看自己的一些文章。当然如果您发现CSDN博客的一些文章值得收藏,你也可以使用本软件轻松的下载到您的电脑。 该版本...

    blogspider

    我的毕业设计,用于抓取百度空间的博客以备份到本地数据库中,可以下载图片到文件系统中。 <br>代码拿出来供大家分享,希望有人一起研究进步。下面是baidu空间所使用数据库的代码,谢谢 create database ...

    csdnBlogSpider:博客备份实用程序

    我们可以使用它来增加csdn id的访问时间,这也是一个博客备份实用程序。 python版本的Blogspider是单线程的,但很简单。 可以与C版本进行比较。 构建csdnBlogSpider 可以在ubuntu 3.11.3上编译和使用...

    scrapy的简单demo

    Scrapy是一个强大的Python爬虫框架,它为网络数据抓取提供了高效的工具和API,使得开发者可以专注于编写爬取逻辑,而无需关注底层实现。在这个简单的Scrapy demo中,我们将探讨如何搭建一个基本的Scrapy项目,理解其...

    Python的Scrapy爬虫框架简单学习笔记

    - **查看页面源码**:使用`view(response)`可以查看当前页面的源代码,帮助分析页面结构。 - **调试选择器**:可以在Shell中反复试验不同的XPath或CSS选择器,直到得到满意的结果。 通过以上步骤,我们已经了解了...

    Python 爬虫实现增加播客访问量的方法实现

    3. **增加访问量的思路**:具体阐述如何利用爬虫技术模拟真实用户访问网页,从而增加特定播客或博客的访问量。这通常涉及到访问请求的伪装、模拟正常的访问频率,以及处理可能遇到的反爬虫机制。 4. **实例代码**:...

Global site tag (gtag.js) - Google Analytics