当前位置:  开发笔记 > 编程语言 > 正文

一个非常简单的C++网络爬虫/蜘蛛?

如何解决《一个非常简单的C++网络爬虫/蜘蛛?》经验,为你挑选了2个好方法。

我正在尝试用C++做一个非常简单的网络爬虫/蜘蛛应用程序.我一直在谷歌搜索一个简单的理解这个概念.我发现了这个:

http://www.example-code.com/vcpp/spider.asp

但是,它有点复杂/难以消化.

我想做的只是,例如:

输入网址:www.example.com(我将使用bash-> wget,获取内容/源代码)

然后,将寻找,也许"一个href"链接,然后存储在一些数据文件中.

对我来说,任何简单的教程或指南?

我刚开始学习C++(1个月)



1> Charles Salv..:

好吧,我会试着指出你正确的方向.从概念上讲,webcrawler非常简单.它围绕一个存储挂起URL的FIFO队列数据结构.C++在标准库中具有内置队列结构std::queue,您可以使用它将URL存储为字符串.

基本算法非常简单:

    从您选择的基本URL开始,并将其放在队列的顶部

    弹出队列顶部的URL并下载

    解析下载的HTML文件并提取所有链接

    将每个提取的链接插入队列

    转到步骤2,或在达到某个指定限制后停止

现在,我说网络浏览器在概念上很简单,但实现它并不是那么简单.从上面的算法中可以看出,您需要:一个允许您下载URL的HTTP网络库,以及一个可以让您提取链接的优秀HTML解析器.您提到可以使用wget下载页面.这稍微简化了一些事情,但您仍然需要实际解析下载的HTML文档.正确解析HTML是一项非常重要的任务.简单的字符串搜索有时只能工作.但是,如果这只是您用来熟悉C++的玩具程序,那么简单的字符串搜索就足以满足您的需要.否则,您需要使用严肃的HTML解析库.

编写网络浏览器时还需要​​考虑其他因素,例如礼貌. 如果您尝试从同一主机下载过多的页面,人们会生气并可能禁用您的IP.因此,您可能需要实施某种策略,其中您的webcrawler会在下载每个站点之前等待一段时间.您还需要一些机制来避免再次下载相同的URL,遵守机器人排除协议,避免爬虫陷阱等...所有这些细节加起来使实际实现强大的webcrawler并不是一件简单的事情.

也就是说,我赞同larsmans的评论.webcrawler不是学习C++的最佳方式.此外,C++并不是编写webcrawler的最佳语言.在编写像webcrawler这样的程序时,你在C++中获得的原始性能和低级访问是无用的,这些程序花费大部分时间等待URL解析和下载.在我看来,像Python这样的高级脚本语言更适合这项任务.


@ popurity09,C++是我最喜欢的语言之一,但我认为没有"最好"的编程语言.相反,某些语言比其他语言更适合某些任务.至于Google,我所知道的是他们的webcrawler的早期版本是用Python编写的.
我认为学习C++概念的更好的练习可能会实现某种产品数据库.每种产品都是不同的类,每个产品都继承自称为Product的基类.然后你可以进入更高级别的课程,如MilkProduct,MeatProduct等.

2> 小智..:

在以下位置检查用C ++编写的Web爬网程序和索引器:Mitza Web爬网程序 该代码可用作参考。干净,为网络爬虫编码提供了良好的开端。序列图可以在上面的链接页面上找到。


而且它*改变了*!:/
推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有