Categories


Tags


抢先式多线程网络蜘蛛

  抢先式多线程网络蜘蛛

整理自网络ChatGPT产生之内容,文本内容不具备参考意义,程序内容及代码片段有且仅有借鉴意义。

  框架
//      Copyright(C) 2017 铭飞科技
//
#region 版权信息
/*
 * 此文件自 Copyright(C) 2008 - 2017 铭飞科技 Classification:无 开源网站:http://www.http://www. coding
 */
#endregion


using System;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;


namespace Web.Templates.UI
{
    /// 
    /// 标签树控件
    /// 
    public class Tree : System.Web.UI.WebControls.TreeView
    {
        private string _styleName = "";

        /// 
        /// 样式
        /// 
        /// The name of the style.
        public string StyleName
        {
            get { return _styleName; }
            set { _styleName = value; }
        }

        private string _checkedValue = "";

        /// 
        /// 默认选中当前值
        /// 
        /// The checked value.
        public string CheckedValue
        {
            get { return _checkedValue; }
            set { _checkedValue = value; }
        }

        private string _checkBoxName = "";

        /// 
        /// 复选框名称
        /// 
        /// The check box name.
        public string CheckBoxName
        {
            get { return _checkBoxName; }
            set { _checkBoxName = value; }
        }

        private int _checkParentType = -1;

        /// 
        /// 
        /// 
        /// The type of the check parent.
        public int CheckParentType
        {
            get { return _checkParentType; }
            set { _checkParentType = value; }
        }

        private int _checkChildType = -1;

        /// 
        /// 
        /// 
        /// The type of the check child.
        public int CheckChildType
        {
            get { return _checkChildType; }
            set { _checkChildType = value; }
        }

        private string _showLevel = "999";

        /// 
        /// 显示层级
        /// 
        /// The show level.
        public string ShowLevel
        {
            get { return _showLevel; }
            set { _showLevel = value; }
        }

        private string _valueField = "id";

        /// 
        /// 编号字段名
        /// 
        /// The value field.
        public string ValueField
        {
            get { return _valueField; }
            set { _valueField = value; }
        }

        private string _textField = "title";

        /// 
        /// 显示字段名
        /// 
        /// The text field.
        public string TextField
        {
            get { return _textField; }
            set { _textField = value; }
        }

        private string _fatherField = "parentid";

        /// 
        /// 父编号字段名
        /// 
        /// The father field.
        public string FatherField
        {
            get { return _fatherField; }
            set { _fatherField = value; }
        }

        private TreeNodeBindEventHandler _onBind;

        /// 
        /// 构建事件
        /// 
        /// The on bind event.
        public event TreeNodeBindEventHandler OnBind
        {
            add { _onBind += value; }
            remove { _onBind -= value; }
        }

        private DataTable _dataSource;

        /// 
        /// 数据源
        /// 
        /// The data source.
        public DataTable DataSource
        {
            get { return _dataSource; }
            set { _dataSource = value; }
        }

        /// 
        /// 绑定数据
        /// 
        public override void DataBind()
        {
            this.Nodes.Clear();
            this.ShowCheckBox = this.CheckBoxName != "" && this.CheckBoxName != null;

            if (_dataSource != null)
            {
                TreeNode root_node = new TreeNode();
                root_node.Value = "-1";
                root_node.Text = "根目录";
                Nodes.Add(root_node);

                List root_list = new List();
                for (int i = 0; i < _dataSource.Rows.Count; i++)
                {
                    TreeNode node = new TreeNode();
                    DataRow dr = _dataSource.Rows[i];

                    node.Value = dr[_valueField].ToString();
                    node.Text = dr[_textField].ToString();
                    node.SelectAction = TreeNodeSelectAction.None;
                    //node.Depth =int.Parse(_showLevel);
                    if (_onBind != null)
                    {
                        _onBind(node);
                    }

                    if (dr[_fatherField].ToString() == "-1" || dr[_fatherField].ToString() == "0")
                    {
                        Nodes.Add(node);
                        if (node.Value == _checkedValue)
                        {
                            node.Checked = true;
                        }

                        int has = 0;
                        for (int j = 0; j < root_list.Count; j++)
                        {
                            if (root_list[j] == int.Parse(node.Value))
                            {
                                has = 1;
                            }
                        }
                        if (has == 0)
                        {
                            root_list.Add(int.Parse(node.Value));
                        }
                    }
                    else
                    {
                        TreeNode father_node = GetNode(root_node, dr[_fatherField].ToString());
                        if (father_node != null)
                        {
                            father_node.ChildNodes.Add(node);
                            if (node.Value == _checkedValue)
                            {
                                node.Checked = true;
                            }
                        }
                    }
                }
                //绑定事件,自动勾选父级节点
                if (this.CheckParentType == 0 || this.CheckChildType == 0)
                {
                    string enterjvice = "";
                    if (this.CheckParentType == 0)
                    {
                        enterjvice += "FatherChecked";
                    }
                    if (this.CheckChildType == 0)
                    {
                        enterjvice += "ChildChecked";
                    }
                    if (enterjvice != "" && this.Nodes.Count > 0)
                    {
                        this.Attributes.Add("onclick", "JscAutoCheckedNode(this,'" + enterjvice + "');");
                    }
                }
            }
            base.DataBind();
        }

        /// 
        /// 构建HTML
        /// 
        /// The  object that receives the server control content.
        protected override void Render(HtmlTextWriter writer)
        {
            string[] style_list = new string[] { "admin_tree", "data_tree", "input_tree", "menu_tree", "popmenu_tree" };
            switch (_styleName)
            {
                case "menu_tree":
                    this.ShowCheckBox = false;
                    this.CssClass += " menu";
                    break;
                case "popmenu_tree":
                    this.

Public @ 2023-02-24 22:24:01 整理自网络ChatGPT产生之内容,文本内容不具备参考意义,程序内容有且仅有借鉴意义。

sogou spider 喜欢收录什么样的页面?

内容优良而独特的页面,如果您的页面内容和互联网上已存在的其他页面有高度的相似性,可能不会被 sogou spider 收录。链接层次较浅的页面,过深的链接层次,尤其是动态网页的链接,会被丢弃而不收录。如果是动态网页,请控制一下参数的数量和URL的长度。搜狗更偏好收录静态网页。重定向次数越多的页面,越有可能被 sogou spider 丢弃。

Public @ 2011-08-12 15:38:57

搜狗搜索蜘蛛爬虫抓取

sogou spider User-Agent字段是什么?PC端UA为Sogou web spiderSogou inst spiderSogou spider无线端UA为Sogou wap spider请注意,根据标准,ua区分大小写。搜狗spider的IP有哪些?搜狗暂不对外提供搜狗spider IP列表,但您可以通过DNS反查IP的方式判断某只spider是否来自搜狗搜索引擎。根据不同平台有

Public @ 2010-02-28 15:38:51

网站抓取了一些不存在的目录跟页面?

网站管理者可以使用301重定向来解决这个问题,该技术会将搜索结果重定向到有效的页面,从而避免访问不存在的页面,提高网站的加载速度。此外,网站管理者可以使用网络爬虫进行定期的审查,以发现不存在的目录和页面,以及确保符合标准的内容。

Public @ 2023-02-24 11:00:15

apache、iis6、ii7独立ip主机屏蔽拦截蜘蛛抓取(适用vps云主机服务器)

在VPS云主机服务器上,可以通过以下方式屏蔽拦截蜘蛛抓取: 1. Apache服务器: 在Apache配置文件(httpd.conf或apache2.conf)中添加以下代码: ``` SetEnvIfNoCase User-Agent ".*((Googlebot)|(Baiduspider)|(Yahoo! Slurp)|(bingbot)|(YandexBot)).*" bad_bot

Public @ 2023-06-20 14:00:28

更多您感兴趣的搜索

0.458834s