(同步个人博客 http://sxysxy.org/blogs/28 到csdn

写一个网络爬虫

写一个网络爬虫,来获取一个网站上感兴趣的信息。

最基本的模型

  • 就是图。每个页面看作一个节点,若页面A有到达页面B的链接,则添加一条由A到B的单向边。爬虫要遍历这张图。

遍历这张图

  • 广度优先搜索即可。 不推荐用深度优先搜索(容易陷入单个分支而难以搜索到更广泛全面的信息) (如果不明白,请自行查询图论相关资料)

(以上noip普及组难度)

但是细节(重点)

  • 1 这不是OI题目,不会把节点以编号的形式给你。 一个页面只能通过它的网址认识它。由网页之间的关系构成的图中很可能(99.99…%)有环,搜索的时候要判重否则就会死在环里面。一个网址,是一个字符串,代表一个页面,如何快速判重? 字典树!

  • 2 如何知道页面A有到达页面B的链接? 抓取页面A的网页源代码分析即可。重点便是html语句例如href= "/blogs/3",表示A能到达页面/blogs/3/

  • 3 访问网络。windows: winsock2.h系列, linux: sys/socket.h系列。用TCP Socket简单地实现http即可。

一个简单的实现

https://github.com/sxysxy/httpSpider 这里我使用c语言做的一个简单的网络爬虫(已经完工)。 同时里面还有字典树和队列数据结构的实现。 httpSpider爬虫搜索遍历网站的同时,可以回调自定制的plugin.dll外挂dll的analyzer函数,将网站的数据发给它(这样泥就可以完成数据分析)。

本来想写个长篇大论的

但是比起什么可持久化树套树啊,FFT/NTT啊,这个真的没什么可多说的。

用c语言写一个网络爬虫相关推荐

  1. 用pycharm进行python爬虫的步骤_使用Pycharm写一个网络爬虫

    在初步了解网络爬虫之后,我们接下来就要动手运用Python来爬取网页了. 我们知道,网络爬虫应用一般分为两个步骤: 1.通过网页链接获取内容: 2.对获得的网页内容进行处理 这两个步骤需要分别使用不同 ...

  2. 用Python写一个网络爬虫爬取网页中的图片

    写一个爬虫爬取百度贴吧中一个帖子图片 网址:壁纸 用谷歌浏览器的开发工具检查网页,可以发现其每一张图片都有如下格式 <img class="BDE_Image" src=&q ...

  3. 如何快速建立一个网络爬虫(初学者指南)

    作为一个采集新手,我搭建了一个网络爬虫,成功的从Amazon Career 网站中提取了20000条数据.如何建立一个网络爬虫并导出到数据库,最终可以将数据无成本地转变成你的财富? 跟着我我往下看吧. ...

  4. 使用Scrapy构建一个网络爬虫

    记得n年前项目需要一个灵活的爬虫工具,就组织了一个小团队用Java实现了一个爬虫框架,可以根据目标网站的结构.地址和需要的内容,做简单的配置开发,即可实现特定网站的爬虫功能.因为要考虑到各种特殊情形, ...

  5. python网络爬虫程序_Python写的网络爬虫程序(很简单)

    Python写的网络爬虫程序(很简单) 这是我的一位同学传给我的一个小的网页爬虫程序,觉得挺有意思的,和大家分享一下.不过有一点需要注意,要用python2.3,如果用python3.4会有些问题出现 ...

  6. 【直播】手把手带你 5 分钟写一个小爬虫,从入门到超神!

    在程序员界流传着这么一个顺口溜:爬虫玩得好,监狱进得早.数据玩得溜,牢饭吃个够--时不时还有 "XX 公司做违法爬虫,程序员坐牢" 的新闻爆出. 在看热闹的同时,很多人都会提出疑问 ...

  7. 建立网络链接编程C语言,用C语言编写一个网络蜘蛛来搜索网上出现的电子邮件地址...

    可能大家经常要去互联网上搜索特定的内容,比如收集大量邮件地址,如果用google之类的搜索引擎是没法实现这种特定功能的,所以用C语言来写一个吧.它的功能就是不断去取得网络上的页面,然后分析出网页上出现 ...

  8. [转]用 C 语言编写一个网络蜘蛛

    用 C 语言编写一个网络蜘蛛来搜索网上出现的电子邮件地址 作者:zhoulifa 来源:http://bbs.chinaunix.net/viewthread.php?tid=821361 可能大家经 ...

  9. c语言的十进制转十六进制字符串,用c语言写一个函数把十进制转换成十六进制,该如何处理...

    用c语言写一个函数把十进制转换成十六进制 用c语言写一个函数把十进制转换成十六进制 网上找到一些,感觉有占乱 分享到: ------解决方案-------------------- #include ...

最新文章

  1. 记录一下我使用的vim的配置文件
  2. 【已解决】对JSP页面传值中文乱码的简单解决方法
  3. poj 2823 单调队列
  4. 可以让SQL针对某个错误信息号抓DUMP的命令组合
  5. python反向切片_Python-关于反向切片的小问题
  6. css 设置文本文字溢出省略号显示
  7. CSS:使用CSS绘制三角形
  8. Win32屏幕保护程序
  9. fanuc机器人与示教器配对_FANUC机器人示教器维修
  10. CRISPR基因编辑技术获诺奖,人类的福音还是灾难?
  11. GPGPU数学基础教程
  12. MATLAB画图必备知识
  13. PowerPMAC技术培训------2、PowerPMAC产品介绍
  14. ABAQUS切削模拟
  15. python爬虫动态更换ip_学爬虫怎么能不会这8个技巧?动态换ip代理都知道
  16. 淘宝API app店铺搜索
  17. 请求报错No route to host (Host unreachable)
  18. Lex/Yacc 初识Lex
  19. 第7届全国大学生GIS应用技能大赛试题
  20. 自动抢单程序,提供给初学者练习接口开发使用

热门文章

  1. Xcode--下载地址大全
  2. 2019牛客暑期多校训练营(第一场)(B、C、E、F、H、I题待补、J)
  3. python selenium自动化,Firefox自动下载文件以及浏览器相关配置
  4. 大家来找茬:富连网今天中午抢购二手iPhone时网站无法访问的问题
  5. Flask源码分析(一)
  6. 手机百度浏览器怎么设置繁体字_百度浏览器繁体版下载-百度浏览器繁体中文版电脑版 - 极光下载站...
  7. 【52. 贪心 - 排序不等式(排队打水)】
  8. 阿里、腾讯、华为、紫光、脸书、港交所等公司高管变动
  9. OpenGL PBO渲染视频数据 [转]
  10. n2n内网穿透及代理服务