自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

缱绻的西格玛

西格玛不离散

  • 博客(14)
  • 资源 (2)
  • 收藏
  • 关注

原创 一只简单的网络爬虫(基于linux C/C++)————主事件流程

该爬虫的主事件流程大致如下: 1.获取命令行参数,执行相应操作 2.读取配置文件,解析得到各种设置 3.载入各种模块 4.种子入队,开启DNS解析线程(原始队列不为空时解析) 5.创建epoll,开启任务,发起请求等等,关注事件 6.while大循环中使用epoll_wait返回活跃的事件,每个事件开启一个线程处理(线程中主要是解析页面,保存页面,url处理等),在线程结束的时候可能会开

2015-09-24 12:52:37 3871 3

原创 一只简单的网络爬虫(基于linux C/C++)————利用正则表达式解析页面

我们向一个HTTP的服务器发送HTTP的请求后,服务器会返回可能一个HTML页面(当然也可以是其他的资源),我们可以利用返回的HTML页面,在其中寻找其他的Url,例如我们可以这样在浏览器上查看一下HTML页面: 右键——>查看源代码 出现的页面大致如下: 我们可以看到,一个HTML的页面内容是想当多的,如果我们使用之前查找字符串的方法一行一行查找的话,效率是想当低下的。同时我们可以看

2015-09-24 12:30:56 4778 2

原创 一只简单的网络爬虫(基于linux C/C++)————线程相关

爬虫里面采用了多线程的方式处理多个任务,以便支持并发的处理,把主函数那边算一个线程的话,加上一个DNS解析的线程,以及我们可以设置的max_job_num值,最多使用了1+1+max_job_num个线程。相关的线程封装如下: 创建线程int create_thread(void *(*start_func)(void *), void * arg, pthread_t *pid, pthread

2015-09-24 10:43:06 2726

原创 一只简单的网络爬虫(基于linux C/C++)————socket相关及HTTP

socket相关建立连接 网络通信中少不了socket,该爬虫没有使用现成的一些库,而是自己封装了socket的相关操作,因为爬虫属于客户端,建立套接字和发起连接都封装在build_connect中//建立连接int build_connect(int *fd, char *ip, int port){ struct sockaddr_in server_addr; bzero

2015-09-24 00:34:51 8386 2

原创 一只简单的网络爬虫(基于linux C/C++)————Url处理以及使用libevent进行DNS解析

Url处理爬虫里使用了两个数据结构来管理Url 下面的这个数据结构用来维护原始的Url,同时有一个原始Url的队列//维护url原始字符串typedef struct Surl { char *url; int level;//url抓取深度 int type;//抓取类型} Surl;原始的Url队列static queue <Surl *> surl

2015-09-23 16:48:55 4918 1

原创 一只简单的网络爬虫(基于linux C/C++)————浅谈并发(IO复用)模型

Linux常用的并发模型Linux 下设计并发网络程序,有典型的 Apache 模型( Process Per Connection ,简称 PPC ), TPC ( Thread Per Connection )模型,以及 select 模型, poll 模型和epoll模型。 1 、PPC/TPC 模型 这两种模型思想类似,就是让每一个到来的连接一边自己做事去,别再来烦我 。只是 PPC 是

2015-09-23 16:01:23 3160 3

原创 一只简单的网络爬虫(基于linux C/C++)————支持动态模块加载

插件在软件设计中有很大的好处为了方便我们爬虫功能的扩展,最好使用插件机制。,使用插件技术能够在分析、设计、开发、项目计划、协作生产和产品扩展等很多方面带来好处: (1)结构清晰、易于理解。由于借鉴了硬件总线的结构,而且各个插件之间是相互独立的,所以结构非常清晰也更容易理解。 (2)易修改、可维护性强。由于插件与宿主程序之间通过接口联系,就像硬件插卡一样,可以被随时删除,插入和修改,所以结构很灵活

2015-09-22 16:24:20 2900

原创 一只简单的网络爬虫(基于linux C/C++)————守护进程

守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,同时,守护进程还能完成许多系统任务,例如,作业规划进程crond、打印进程lqd等(这里的结尾字母d就是Daemon的意

2015-09-22 15:24:40 2852

原创 一只简单的网络爬虫(基于linux C/C++)————读取命令行参数及日志宏设计

linux上面的程序刚开始启动的时候一般会从命令行获取某些参数,比如以守护进程运行啊什么的,典型的例子就是linux下的man,如下图所示 实现该功能可以使用getopt函数实现,该函数在头文件unistd.h定义 函数原型 int getopt(int argc,char * const argv[ ],const char * optstring); 函数说明

2015-09-22 11:55:27 3233 4

原创 一只简单的网络爬虫(基于linux C/C++)————配置文件设计及读取

一般来说linux下比较大型的程序都是以配置文件作为参数介质传递的,该爬虫也采用配置文件的方式来获取参数,配置文件格式大致如下:max_job_num=1#seeds=https://www.baidu.com#seeds=http://bbs.scut.edu.cn/classic/logfile=spiderq.log以“=”作为分割符,左边为key,右边为valve,主要包含的参数内容为

2015-09-22 11:02:07 3356

原创 一只简单的网络爬虫(基于linux C/C++)————开篇

最近学习开发linux下的爬虫,主要是参考了该博客及其他一些网上的资料。网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。目前有一些比较出名的一些开源爬虫,开源爬虫Labin,Nutch,Neritrix介绍和对比见这里 下面说的爬虫是作为一个

2015-09-22 10:31:06 7647 3

原创 单例模式及单例类的两种实现

单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。单例模式同时也是所有设计模式中最简单的一种。 那么问题来了,单例类有什么作用呢?对于系统中的某些类来说,只有一个实例很重要,例如,一个系统中可

2015-09-11 20:28:14 2408

原创 对象析构不析构?

C++中的默认构造函数还有析构函数都是默认在“适当的时机”被调用的,这在一般的编程中似乎是比较明了的。《C++ Primer》作者Stanley B.Lippman说”C++保证,一定会在main()函数中第一次使用全局对象之前,把它构造出来,而在main()函数结束之前,把它摧毁掉!”,那么自然的,在对象被构造的时候,调用构造函数,main函数结束之前调用析构函数将对象销毁,下面这个简单的例子也是

2015-09-11 16:26:41 1754

原创 C++11的mutex和lock_guard,muduo的MutexLock 与MutexLockGuard

互斥锁是用来保护一段临界区的,它可以保证某段时间内只有一个线程在执行一段代码或者访问某个资源。 C++11的mutex和lock_guard C++11新增了mutex,使用方法和linux底下的常用使用方法差不多。先使用std::mutex 定义一个互斥锁,例如std::mutex XXXmutex在需要使用互斥锁的时候,使用XXXmutex.lock();上锁,以及使用XXXmutex.un

2015-09-11 15:58:32 2754

SI4安装及破解文件.zip

SI4安装及破解文件.zip

2019-09-20

AFE4300参考资料

AFE4300参考电路图,参考代码,及一些参考的文档

2016-01-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除