龙空技术网

教你用C#实现:简单又高效的“爬虫”程序

飞驰网 3122

前言:

如今看官们对“css如何让文字在图片上面”大体比较关注,看官们都需要学习一些“css如何让文字在图片上面”的相关文章。那么小编也在网上网罗了一些关于“css如何让文字在图片上面””的相关内容,希望大家能喜欢,朋友们快快来学习一下吧!

说起爬虫似乎都成了python的专属了,我不知道其他人怎么样?至少我平时对爬虫的应用场景很小,所以一直没有关注它。近期因为一个小项目——一个客户的网站忘了续费,结果被服务商索取高额服务费(好在网站还能打开),刚好客户遇到我们,我们当场从0开始开发了一个爬虫,一下午就把内容爬下来了。

一、原理(用大白话告诉你原理)

网页最终呈现在浏览器中,都是以html编码呈现的,html是什么都不懂的话,这篇文章都不懂的话,这篇文章可能不适合你,但我还是愿意给你扫扫盲;html就是把文字或图片进行定位排版的一种描述性语言。比如:加粗<b>加粗</b>,比如下划线<i>这是下划线</i>基本所有内容都是由类似这样的标签包裹起来的,下面看一组html的编码(你到任何一个网站点右键‘查看源文件’都能看到它的编码文件)。

html源文件

通过上图可以观察到,我们需要取的内容都在html标签内包含,再仔细观察这个html标签,发现两个特点:

1、新闻的标题在:<a>新闻标题</a>(a标签内包含)

2、新闻的下级链接:<a href="http://下级内容链接"> (a标签的href内包含)

这里你需要记住两个行业术语,1这种形态:标签内包含的叫“内容”,2这种形态:叫“属性”,一个完整的标签是由内容和属性构成,属性不是必须的,如果内容你也不写的话,就会什么也不显示,就成了无意义标签。

大量的标签构成了html网页,标签也有父子归属关系,就好比数学上的:大括号管中括号,中括号管小括号一样。

扫盲到此为止……

根据上面的html显示,我们需要用爬虫剔骨卸肉一般,将a标签中的标题文字,和下级链接取出。

二、关键技术——“解析”

本文开始说到python很擅长做爬虫,那是python语言的爱好者圈子里,贡献了很多解析html代码的小工具(行业内把各种工具类的代码片段叫:类库),比如这个类库的作用是:给它喂一篇html文档,你简单描述一下要求,(例如:要求取出所有a标签的文字),这个类库就可以高效的根据你的描述,把整个源码文档中的a标签的文字剔出来。这个“剔”的过程,行业内把它叫“解析”。

解析文档无论在什么语言中,都是一件非常细致且耗时的工作,“类库”只是某种语言的爱好者,把某个常用功能剥离出来,可以在不同的程序之间移植而已。

比如:上面介绍的就是html解析类库,python的这个语言并不是天生就会做什么,而是它的社区很活跃,被爱好者共享的类库很多而已。

但是话又说回来了,其他老牌语言也不见得类库就少,比如:C#或java各种工具类库也是铺天盖地,今天介绍的就是c#下的一款优秀的html解析类库——“HtmlAgilityPack”。

它的用法和jqurey非常像,如果你想取出下面链接地址和文字,那么就这么描述就行:

实现方法

//定义一个根节点Dom_list = "//table[@id='content_one_4']";//查询指定容器下的组节点 HtmlNode documentNode = doc.DocumentNode.SelectSingleNode(Dom_list); HtmlNodeCollection linklist = documentNode.SelectNodes(".//a");//把这一组a标签循环取出foreach (var item in linklist){      //【核心】获取链接文字和链接的地址      string link_title = item.InnerHtml;      string link_url = item.Attributes["href"].Value;       //检测重复记录后写入数据库:根据情况自己完成入库操作}

这么简简单单的几句代码就完成了爬虫的核心工作,数据进了你本地库,你爱怎么变花样就怎么变。

如果你把爬虫的原理搞明白了,制作起来还是很容易的,但容易的前提是你用了别人的类库,如果让你从零开始,去分析解析一篇html文档,那就非常复杂。除了用常见的正则表达式去匹配各种规则,还要有大量的容错机制,确实不是一般程序员能快速搞定的事。

python之所以目前很受欢迎,主要得益于它的类库丰富,把程序开发活脱脱变成了套壳,小白上手很容易;但话又说回来,如果一个项目要你徒手从零完成,那无论用什么语言,工作量其实也都差不多了。

下面是我做的一个桌面爬虫应用程序,之所以用做成程序而不是网页,主要是考虑到这是个工具,开箱即用,web再方便也需要部署环境,在这一点上一个exe的绿色软件,还是有相当大的优势的。

我的爬虫软件

软件使用很简单:对目标网站进行简单进行配置以后,先点击【采集目录】就可以获得所有的内容页的地址存入“工作进程”中(例如:获取了1000条内容地址),然后点击【采集内容】,程序就依次从从“工作进程”中的地址采集内容。

多线程采集,网速够快几分钟就采集完成了,如果你想做个爬虫,就试试吧。

标签: #css如何让文字在图片上面