蜘蛛爬虫

简介:

using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //需要解析的集合
            List<string> list = new List<string>();
            //已经解析的集合
            List<string> listCount = new List<string>();
            
            list.Add("http://www.baidu.com");

            ReadHtml(list,listCount);
            Console.ReadLine();
        }

        /// <summary>
        /// 读取HTML中的URL
        /// </summary>
        /// <param name="list"></param>
        /// <param name="listCount"></param>
        public static void ReadHtml(List<string> list, List<string> listCount) 
        {
            List<string> count = new List<string>();
            for (int a = 0; a < list.Count; a++)
            {
                //没有解析过该项
                if (!listCount.Contains(list[a]))
                {
                    try
                    {
                        //在已解析过的集合里面添加本条数据
                        listCount.Add(list[a]);
                        WebRequest req = WebRequest.Create(list[a]);
                        WebResponse result = req.GetResponse();
                        //得到的流是网页内容   
                        Stream ReceiveStream = result.GetResponseStream();
                        StreamReader readerOfStream = new StreamReader(ReceiveStream, System.Text.Encoding.GetEncoding("GB2312"));
                        //得到当前URL的源码
                        string str = readerOfStream.ReadToEnd();
                        //解析
                        Regex regex = new Regex(@"http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?");
                        foreach (Match mc in regex.Matches(str))
                        {
                            Regex regexOhter = new Regex(list[a] + "|.png|.jpg|.gif|.bmp|.js|.css|.xls|.doc|.pdf|.chw|.exe|.mp3|.mp4|.avi|.swf|.xml");
                            if (!regexOhter.IsMatch(mc.ToString()))
                            {
                                Console.WriteLine(mc);
                                count.Add(mc.ToString());
                            }
                        }
                        Console.WriteLine("----------------------解析完一个页面!--------------------");
                        if (a == list.Count - 1)
                        {
                            //递归调用本方法
                            ReadHtml(count, listCount);
                        }
                    }
                    catch (System.Exception ex) { }
                    finally 
                    {
                        List<string> error = new List<string>();
                        //如果出错在出错的后面一条URL继续解析
                        for (int z = a + 1; z < list.Count; z++) 
                        {
                            error.Add(list[z]);
                        }
                        //继续解析
                        ReadHtml(error, listCount);
                    }
                }
            }
        }
    }
}




























本文转自蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366612,如需转载请自行联系原作者

相关文章
|
数据采集
百度蜘蛛ip段大全分析爬虫式
百度蜘蛛ip段大全分析爬虫式:https://www.20200824.com
363 0
|
数据采集 搜索推荐 iOS开发
2019年最新出搜索引擎蜘蛛网页爬虫大全
2019年最新出搜索引擎蜘蛛网页爬虫大全分享,各大seo引擎搜索的蜘蛛会一次又一次访问爬取我们站点的文章内容,也会耗费一定的站点流量; 有时候就必须屏蔽一些蜘蛛浏览我们的站点,文章尾部会讲解决方案; 掌握各大搜索引擎蜘蛛爬虫,对我们开展网站SEO优化具有挺大作用;作者搜集了各大搜索引擎的蜘蛛爬虫UA,便于你需要时查看。
3828 0
|
Web App开发 监控 Linux
Web网站如何查看搜索引擎蜘蛛爬虫的行为
简介 本文给大家介绍Linux/Nginx如何查看搜索引擎蜘蛛爬虫的行为,清楚蜘蛛的爬行情况对做SEO优化有很大的帮助。需要的朋友通过本篇文章学习下吧 摘要 做好网站SEO优化的第一步就是首先让蜘蛛爬虫经常来你的网站进行光顾,下面的Linux命令可以让你清楚的知道蜘蛛的爬行情况。
2782 0
|
Web App开发 监控 应用服务中间件
Web网站如何查看搜索引擎蜘蛛爬虫的行为
简介 本文给大家介绍Linux/Nginx如何查看搜索引擎蜘蛛爬虫的行为,清楚蜘蛛的爬行情况对做SEO优化有很大的帮助。需要的朋友通过本篇文章学习下吧 摘要 做好网站SEO优化的第一步就是首先让蜘蛛爬虫经常来你的网站进行光顾,下面的Linux命令可以让你清楚的知道蜘蛛的爬行情况。
1345 0
|
Web App开发 数据采集 监控
|
Web App开发 数据采集 机器人
|
Web App开发 数据采集 测试技术
Kali Linux Web 渗透测试秘籍 第三章 爬虫和蜘蛛
第三章 爬虫和蜘蛛 作者:Gilberto Najera-Gutierrez 译者:飞龙 协议:CC BY-NC-SA 4.0 简介 渗透测试可以通过多种途径完成,例如黑盒、灰盒和白盒。
1818 0
|
7天前
|
数据采集 存储 数据挖掘
Python网络爬虫实战:抓取并分析网页数据
使用Python的`requests`和`BeautifulSoup`,本文演示了一个简单的网络爬虫,抓取天气网站数据并进行分析。步骤包括发送HTTP请求获取HTML,解析HTML提取温度和湿度信息,以及计算平均温度。注意事项涉及遵守robots.txt、控制请求频率及处理动态内容。此基础爬虫展示了数据自动收集和初步分析的基础流程。【6月更文挑战第14天】
75 9

热门文章

最新文章