广度优先,模拟爬虫,嗅探URL

2024-02-24 14:08

本文主要是介绍广度优先,模拟爬虫,嗅探URL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在窗体上放两个按钮,一个RichText

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        private Dictionary<string, int> URLs = new Dictionary<string, int>();
       
  
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            button2.Enabled = false;
            long T1=DateTime.Now.Ticks;
            URLs.Clear();
            URLs.Add("http://www.Csdn.Net/default.aspx", 0);

            //最大允许深度5
            for (int i = 0; i < 5; i++)
            {
                widthFirst(i);
            }
            long T2=DateTime.Now.Ticks;
            MessageBox.Show("完成" + URLs.Count + "耗时:" + TimeSpan.FromTicks(T2-T1).Milliseconds + "毫秒");
            button2.Enabled = true;
           
        }
        private void widthFirst(int Deep)
        {
            Dictionary<string, int> tempURLs = new Dictionary<string, int>();
            foreach (string url in URLs.Keys)
            {
                if (URLs[url] == Deep)
                {
                    string[] urlArr = getUrl(url);
                    foreach (string newUrl in urlArr)
                    {
                        if (!URLs.ContainsKey(newUrl) && !tempURLs.ContainsKey(newUrl))
                        {
                            tempURLs.Add(newUrl, Deep + 1);
                        }
                    }
                }
            }
            foreach (string newUrl in tempURLs.Keys)
            {
                URLs.Add(newUrl, tempURLs[newUrl]);
            }  
        }

        /// <summary>
        /// 模拟得到地址数组
        /// </summary>
        /// <returns></returns>
        private string[] getUrl(string url)
        {
            Random Rnd = new Random();
            string[] Arr = new string[Rnd.Next(2,10)];            
            for (int i = 0; i < Arr.Length; i++)
            {
                //如果模拟的地址容易冲突就可能产生只搜索2层的事情。
                Arr[i] = "http://www.Csdn.Net/" + Guid.NewGuid().ToString() + ".aspx";
            }
            return Arr;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            int i = 0;
            foreach (string url in URLs.Keys)
            {
                i++;
                this.richTextBox1.Text += i.ToString()+"第" + URLs[url] + "层:" + url + "/n";
                Application.DoEvents();
            }
        }
    }
}

这篇关于广度优先,模拟爬虫,嗅探URL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/742345

相关文章

SpringBoot实现基于URL和IP的访问频率限制

《SpringBoot实现基于URL和IP的访问频率限制》在现代Web应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段,为了保护系统资源,需要对接口的访问频率进行限制,下面我们就来看看如何使用... 目录1. 引言2. 项目依赖3. 配置 Redis4. 创建拦截器5. 注册拦截器6. 创建控制器8.

hdu1180(广搜+优先队列)

此题要求最少到达目标点T的最短时间,所以我选择了广度优先搜索,并且要用到优先队列。 另外此题注意点较多,比如说可以在某个点停留,我wa了好多两次,就是因为忽略了这一点,然后参考了大神的思想,然后经过反复修改才AC的 这是我的代码 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

usaco 1.2 Transformations(模拟)

我的做法就是一个一个情况枚举出来 注意计算公式: ( 变换后的矩阵记为C) 顺时针旋转90°:C[i] [j]=A[n-j-1] [i] (旋转180°和270° 可以多转几个九十度来推) 对称:C[i] [n-j-1]=A[i] [j] 代码有点长 。。。 /*ID: who jayLANG: C++TASK: transform*/#include<

poj 3190 优先队列+贪心

题意: 有n头牛,分别给他们挤奶的时间。 然后每头牛挤奶的时候都要在一个stall里面,并且每个stall每次只能占用一头牛。 问最少需要多少个stall,并输出每头牛所在的stall。 e.g 样例: INPUT: 51 102 43 65 84 7 OUTPUT: 412324 HINT: Explanation of the s

poj 2431 poj 3253 优先队列的运用

poj 2431: 题意: 一条路起点为0, 终点为l。 卡车初始时在0点,并且有p升油,假设油箱无限大。 给n个加油站,每个加油站距离终点 l 距离为 x[i],可以加的油量为fuel[i]。 问最少加几次油可以到达终点,若不能到达,输出-1。 解析: 《挑战程序设计竞赛》: “在卡车开往终点的途中,只有在加油站才可以加油。但是,如果认为“在到达加油站i时,就获得了一

hdu4431麻将模拟

给13张牌。问增加哪些牌可以胡牌。 胡牌有以下几种情况: 1、一个对子 + 4组 3个相同的牌或者顺子。 2、7个不同的对子。 3、13幺 贪心的思想: 对于某张牌>=3个,先减去3个相同,再组合顺子。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOExcepti

POJ2010 贪心优先队列

c头牛,需要选n头(奇数);学校总共有f的资金, 每头牛分数score和学费cost,问合法招生方案中,中间分数(即排名第(n+1)/2)最高的是多少。 n头牛按照先score后cost从小到大排序; 枚举中间score的牛,  预处理左边与右边的最小花费和。 预处理直接优先队列贪心 public class Main {public static voi

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de