蜘蛛爬虫

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: using System; using System.Collections.Generic; using System.IO; using System.

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);
                    }
                }
            }
        }
    }
}



相关文章
|
4月前
|
数据采集 Web App开发 安全
爬虫
该文介绍了爬虫的基础知识,包括爬虫的定义(通过编程模拟浏览器抓取网络数据)、价值(实际应用和就业需求)、法律地位(合法但有违法风险,分为善意和恶意爬虫)以及可能带来的风险(影响网站运营和触犯法律)。为避免问题,建议优化程序、审查抓取内容。爬虫类型包括通用、聚焦和增量式爬虫。文中还提到了反爬与反反爬策略,以及robots.txt协议作为网站数据爬取的君子协定。此外,讨论了HTTP协议(包括User-Agent和Connection)和HTTPS协议的安全性及加密方式。
85 0
|
4月前
|
数据采集 搜索推荐 数据挖掘
爬虫应用
爬虫应用
53 2
|
数据采集 存储 JSON
一文学会爬虫技巧
作为冷数据启动和丰富数据的重要工具,爬虫在业务发展中承担着重要的作用,我们业务在发展过程中积累了不少爬虫使用的经验,在此分享给大家,希望能对之后的业务发展提供一些技术选型方向上的思路,以更好地促进业务发展
一文学会爬虫技巧
|
数据采集 存储 机器学习/深度学习
爬虫系列:爬虫介绍
在大数据深入人心的时代,网络数据采集作为网络、数据库与机器学习等领域的交汇点,爬虫技术已经成为满足个性化网络数据需求的最佳实践。
274 0
爬虫系列:爬虫介绍
|
数据采集 搜索推荐 iOS开发
2019年最新出搜索引擎蜘蛛网页爬虫大全
2019年最新出搜索引擎蜘蛛网页爬虫大全分享,各大seo引擎搜索的蜘蛛会一次又一次访问爬取我们站点的文章内容,也会耗费一定的站点流量; 有时候就必须屏蔽一些蜘蛛浏览我们的站点,文章尾部会讲解决方案; 掌握各大搜索引擎蜘蛛爬虫,对我们开展网站SEO优化具有挺大作用;作者搜集了各大搜索引擎的蜘蛛爬虫UA,便于你需要时查看。
3858 0
cxa
|
数据采集 Python
一个爬虫小技巧
一个爬虫小技巧
cxa
1200 0
|
Web App开发 数据采集 JavaScript
爬虫问题总结
本文档对日常学习中用 python 做数据爬取时所遇到的一些问题做简要记录,以便日后查阅,部分问题可能因为认识不到位会存在一些误解,敬请告知,万分感谢,共同进步。 估算网站规模 该小节主要针对于整站爬取的情况。
1826 0
|
Web App开发 数据采集 机器人
|
数据采集 Java 索引
gecco爬虫
http://www.geccocrawler.com/intro/ Gecco是一款用java语言开发的轻量化的易用的网络爬虫,不同于Nutch这样的面向搜索引擎的通用爬虫,Gecco是面向主题的爬虫。
968 0
|
数据采集 前端开发 数据格式