相信各位站长都很关心自己网站的收录情况,但是我们网站的内容很多,又不可能挨着搜索链接。我想很多朋友都是使用的爱站、火车头、网销客之类的工具查询网站链接的收录情况。今天给大家分享一篇通过C#实现查询网站地图中链接的收录情况的教程,教大家使用C#自己编写程序查询网站的收录情况。我仅以百度收录情况为例,如果你需要,完全可以自己加入谷歌、必应、搜狗、360等搜索引擎的收录情况在其中,还可以导出数据到excel表格中(本文没有写这个功能)。
开发环境:
- visual studio 2012
- .net框架4.0
没有开发环境的朋友也不用担心,文末的文件中有编译好的程序,双击即可运行。
C#解析网站地图xml文件
XmlDocument xmlDoc = new XmlDocument(); XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true; //忽略文档里面的注释 XmlReader reader = XmlReader.Create(url, settings); xmlDoc.Load(reader); XmlElement root = xmlDoc.DocumentElement; XmlNodeList listNodes = root.ChildNodes; foreach (XmlNode notes in listNodes) { foreach (XmlNode child in notes.ChildNodes) { if (child.Name == "loc") { MessageBox.Show(child.InnerText);//这里就是网页地址 } } }
GET方式请求百度
然后我们需要结合前面讲过的方法访问百度,实现get请求,具体实现代码在这篇文章中,复制即可使用。C#HttpWebRequest带cookies访问网页GET,里面的cookies不需要你可以去掉。
有了访问百度的方法,我们再看看百度搜索请求:
请求方式:get
请求地址:https://www.baidu.com/s
请求参数:wd=请求值
返回值:返回百度搜索请求值的网页源码
请求示例:https://www.baidu.com/s?wd=https://www.daimadog.org
我们注意到,搜索网页中有一个关于搜索结果数量的提示,如下图。所以我们只需要判断这个数量即可知道,我们的网页是否被收录。
正则匹配结果
匹配目标文本正则规则:
百度为您找到相关结果约([\w,]+?)个
使用上面的正则规则即可匹配出查询结果数量,为0即未收录。
String html = Get("https://www.baidu.com/s?wd=" + child.InnerText, "", "UTF-8"); MatchCollection mc = Regex.Matches(html, @"百度为您找到相关结果约([\w,]+?)个", RegexOptions.IgnoreCase); int slnum = 0; foreach (Match m in mc) { Console.WriteLine(m.Groups[1].Value);//收录数量 }
其中的m.Groups[1].Value就是搜索结果数量,Get方法是前面文章中提到的方法,需要的请自行查看。还使用了dataGridView控件,为避免运行时UI卡顿,还使用了线程与委托,不清楚的可以查看这篇文章,C#线程与委托的简单使用,最终效果就和上面第一张图一样了。
注意:如果你没有开发环境,那么请确保你的电脑安装了.net框架4.0,否则将无法运行程序。编译好的EXE可执行程序在压缩包下WindowsFormsApplication2\WindowsFormsApplication2\bin\Debug目录中,WindowsFormsApplication2.exe文件就是,双击运行。
评论 (3)