搜索引擎按其工作方式主要可分为三种,分别是全文搜索引擎(Full Text Search Engine)、目录索引类搜索引擎(Search Index/Directory)和元搜索引擎(Meta Search Engine)。
一 基本概念
搜索引擎指自动从因特网搜集信息,经过一定整理以后,提供给用户进行查询的系统。因特网上的信息浩瀚万千,而且毫无秩序,所有的信息像汪洋上的一个个小岛,网页链接是这些小岛之间纵横交错的桥梁,而搜索引擎,则为用户绘制一幅一目了然的信息地图,供用户随时查阅。它们从互联网提取各个网站的信息(以网页文字为主),建立起数据库,并能检索与用户查询条件相匹配的记录,按一定的排列顺序返回结果。
二 工作原理
1抓取网页
每个独立的搜索引擎都有自己的网页抓取程序(spider)。Spider顺着网页中的超链接,连续地抓取网页。被抓取的网页被称之为网页快照。由于互联网中超链接的应用很普遍,理论上,从一定范围的网页出发,就能搜集到绝大多数的网页。
2处理网页
搜索引擎抓到网页后,还要做大量的预处理工作,才能提供检索服务。其中,最重要的就是提取关键词,建立索引文件。其他还包括去除重复网页、分词(中文)、判断网页类型、分析超链接、计算网页的重要度/丰富度等。
3提供检索服务
用户输入关键词进行检索,搜索引擎从索引数据库中找到匹配该关键词的网页;为了用户便于判断,除了网页标题和URL外,还会提供一段来自网页的摘要以及其他信息。
/// <summary>
/// 获取html
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
private string GetHtml(string url)
{
string strHTML = "";
try
{
WebClient myWebClient = new WebClient();
Stream myStream = myWebClientOpenRead(url);
StreamReader sr = new StreamReader(myStream, SystemTextEncodingGetEncoding("gbk"));
strHTML = srReadToEnd();
myStreamClose();
return strHTML;
}
catch
{
return "";
}
} private ImageBase GetImgClass(string url)
{
string html = GetHtml(url);
ImageBase ib = new ImageBase();
// string a = @"<img\ssrc\s=\s[""']\s([^\s""'<>])\s/\s>";
Regex RegexObj = new Regex("(<img (id=\"J_ImgBooth\")(|\n)</img>)|(<img (id=\"J_ImgBooth\")(|\n)/>)", RegexOptionsMultiline);
// MatchCollection Mathclist = RegexObjMatche(html);
string imgstr = RegexObjMatch(html)Value;
string index = imgstrSubstring(imgstrIndexOf("data-src"));
index = indexSubstring(indexIndexOf("> }
上面给了2个代码 一个是 获取网页内容 一个是截取想要的具体内容
共参考
14102901 : 07 04 02 06 08
14102902 : 07 02 10 08 11
14102903 : 06 04 07 11 10
14102904 : 01 05 08 09 03
14102905 : 06 05 10 09 08
14102906 : 11 03 09 01 06
14102907 : 03 05 08 06 09
14102908 : 04 07 03 06 01
14102909 : 02 07 01 09 05
14102910 : 02 11 04 09 01
14102911 : 10 07 08 11 06
14102912 : 09 04 01 08 05
14102913 : 10 04 09 07 03
14102914 : 05 06 07 02 04
14102915 : 03 11 08 10 05
14102916 : 03 11 05 07 01
14102917 : 07 09 03 02 04
14102918 : 02 11 05 01 06
14102919 : 03 05 01 02 06
14102920 : 03 05 11 08 10
14102921 : 02 11 06 07 05
14102922 : 06 01 04 02 11
14102923 : 11 07 10 05 04
14102924 : 03 11 04 10 07
14102925 : 01 11 07 05 04
14102926 : 10 09 05 08 04
14102927 : 09 02 05 04 08
14102928 : 03 09 08 05 02
14102929 : 04 07 05 09 10
14102930 : 04 05 06 09 07
14102931 : 02 09 07 10 06
14102932 : 03 05 04 06 07
14102933 : 09 04 07 08 10
14102934 : 05 09 11 10 07
14102935 : 10 09 11 06 08
14102936 : 05 09 07 10 08
14102937 : 05 11 04 10 01
14102938 : 01 09 11 08 10
14102939 : 02 09 11 10 04
14102940 : 05 07 08 01 09
14102941 : 05 08 09 03 01
14102942 : 03 11 08 09 10
14102943 : 01 09 03 02 08
14102944 : 07 11 05 06 09
14102945 : 03 02 11 01 10
14102946 : 11 05 02 10 07
14102947 : 07 05 04 06 08
14102948 : 09 07 06 04 05
14102949 : 02 05 03 09 04
14102950 : 09 05 04 10 03
14102951 : 08 09 11 02 05
14102952 : 01 10 11 07 05
14102953 : 03 11 04 06 05
14102954 : 08 06 05 03 07
14102955 : 06 11 02 07 08
14102956 : 05 06 09 04 03
14102957 : 04 05 07 01 11
14102958 : 06 07 03 08 05
14102959 : 04 02 08 06 07
14102960 : 02 01 04 07 10
14102961 : 02 08 03 01 09
14102962 : 11 04 01 08 06
14102963 : 03 06 11 02 04
14102964 : 07 10 02 04 11
14102965 : 10 03 11 06 02
14102966 : 05 10 03 02 09
14102967 : 05 06 11 01 02
14102968 : 01 04 11 07 05
14102969 : 08 03 05 02 06
14102970 : 05 01 03 04 07
14102971 : 07 03 04 08 02
14102972 : 07 10 03 01 06
14102973 : 03 08 04 02 09
14102974 : 02 09 03 04 06
14102975 : 05 06 01 10 02
14102976 : 09 04 05 06 03
14102977 : 11 09 04 07 02
14102978 : 02 05 11 07 10
主要是PR技术以及匹配技术。
最著名的并且获得了专利的当然就是google的PR技术
家可能听说过,Google革命性的发明是它名为“PageRank”的网页排名算法,这项技术彻底解决了搜索结果排序的问题。其实最先试图给互联网上的众多网站排序的并不是Google。Yahoo!公司最初第一个用目录分类的方式让用户通过互联网检索信息,但由于当时计算机容量和速度的限制,当时的Yahoo!和同时代的其它搜索引擎都存在一个共同的问题:收录的网页太少,而且只能对网页中常见内容相关的实际用词进行索引。那时,用户很难找到很相关信息。我记得1999年以前查找一篇论文,要换好几个搜索引擎。后来DEC公司开发了AltaVista搜索引擎,只用一台ALPHA服务器,却收录了比以往引擎都多的网页,而且对里面的每个词进行索引。AltaVista虽然让用户搜索到大量结果,但大部分结果却与查询不太相关,有时找想看的网页需要翻好几页。所以最初的AltaVista在一定程度上解决了覆盖率的问题,但不能很好地对结果进行排序。
Google的“PageRank”(网页排名)是怎么回事呢?其实简单说就是民主表决。打个比方,假如我们要找李开复博士,有一百个人举手说自己是李开复。那么谁是真的呢?也许有好几个真的,但即使如此谁又是大家真正想找的呢?:-)如果大家都说在Google公司的那个是真的,那么他就是真的。
在互联网上,如果一个网页被很多其它很多网页所链接,说明它受到普遍的承认和信赖,那么它的排名就高。这就是PageRank的核心思想。当然Google的PageRank算法实际上要复杂得多。比如说,对来自不同网页的链接对待不同,本身网页排名高的链接更可靠,于是给这些链接予较大的权重。PageRank考虑了这个因素,可是现在问题又来了,计算搜索结果的网页排名过程中需要用到本身网页的排名,这不成了先有鸡还是先有蛋的问题了吗?
Google的两个创始人拉里佩奇(LarryPage)和谢尔盖布林(SergeyBrin)把这个问题变成了一个二维矩阵相乘的问题,并且用迭代的方法解决了这个问题。他们先假定所有网页的排名是相同的,并且根据这个初始值,算出各个网页的第一次迭代排名,然后再根据第一次迭代排名算出第二次的排名。他们两人从理论上证明了不论初始值如何选取,这种算法都保证了网页排名的估计值能收敛到他们的真实值。值得一提的事,这种算法是完全没有任何人工干预的。
理论问题解决了,又遇到实际问题。因为互联网上网页的数量是巨大的,上面提到的二维矩阵从理论上讲有网页数目平方之多个元素。如果我们假定有十亿个网页,那么这个矩阵就有一百亿亿个元素。这样大的矩阵相乘,计算量是非常大的。拉里和谢尔盖两人利用稀疏矩阵计算的技巧,大大的简化了计算量,并实现了这个网页排名算法。今天Google的工程师把这个算法移植到并行的计算机中,进一步缩短了计算时间,使网页更新的周期比以前短了许多。
我来Google后,拉里(Larry)在和我们几个新员工座谈时,讲起他当年和谢尔盖(Sergey)是怎么想到网页排名算法的。他说:"当时我们觉得整个互联网就像一张大的图(Graph),每个网站就像一个节点,而每个网页的链接就像一个弧。我想,互联网可以用一个图或者矩阵描述,我也许可以在用这个发现做个博士论文。"他和谢尔盖就这样发明了PageRank的算法。
网页排名的高明之处在于它把整个互联网当作了一个整体对待。它无意识中符合了系统论的观点。相比之下,以前的信息检索大多把每一个网页当作独立的个体对待,很多人当初只注意了网页内容和查询语句的相关性,忽略了网页之间的关系。
今天,Google搜索引擎比最初的复杂、完善了许多。但是网页排名在Google所有算法中依然是至关重要的。在学术界,这个算法被公认为是文献检索中最大的贡献之一,并且被很多大学引入了信息检索课程(InformationRetrieval)的教程。
1、抓取网页
每个独立的搜索引擎都有自己的网页抓取程序(spider)。Spider顺着网页中的超链接,连续地抓取网页。由于互联网中超链接的应用很普遍,理论上,从一定范围的网页出发,就能搜集到绝大多数的网页。
2、处理网页
搜索引擎抓到网页后,还要做大量的预处理工作,才能提供检索服务。其中,最重要的就是提取关键词,建立索引文件。其他还包括去除重复网页、分析超链接、计算网页的重要度。
3、提供检索服务
用户输入关键词进行检索,搜索引擎从索引数据库中找到匹配该关键词的网页;为了用户便于判断,除了网页标题和URL外,还会提供一段来自网页的摘要以及其他信息。
因此,我们如果使用 AJAX 加载的动态网页,怎么爬取里面动态加载的内容呢?有两种方法:
方法1 *** 作步骤:
步骤:
selenium选择元素的方法有很多:
有时候,我们需要查找多个元素。在上述例子中,我们就查找了所有的评论。因此,也有对应的元素选择方法,就是在上述的element后加上s,变成elements。
其中xpath和css_selector是比较好的方法,一方面比较清晰,另一方面相对其他方法定位元素比较准确。
除此之外,我们还可以使用selenium *** 作元素方法实现自动 *** 作网页。常见的 *** 作元素方法如下:
– clear 清除元素的内容
– send_keys 模拟按键输入
– click 点击元素
– submit 提交表单
由于篇幅有限,有兴趣的读者,可以到selenium的官方文档查看: >
以上就是关于什么是搜索引擎全部的内容,包括:什么是搜索引擎、C#在vs里用控制台应用程序怎样进行网页抓取,求代码。。、网页数据抓取等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)