登录
首页 » C#源码 » 一个C# 多线程的网页异步抓取类文件代码

一个C# 多线程的网页异步抓取类文件代码

于 2023-05-03 发布 文件大小:6.57 kB
0 222
下载积分: 2 下载次数: 1

代码说明:

一个C#编写的多线程异步抓取网页的网络爬虫控制台程序类代码,这个类实现对网页URL指定内容网页的抓取,并抓取 内容中的链接、文字内容、从HTML代码中分析出链接信息等,本类中还定义了大量的私有方法,从这些私有方法中可从HTML文本中提取出一定字数的纯文本、提取网页中一定字数的纯文本,包括链接文字、提取一定数量的链接,该链接的URL满足某正则式、提取本网页的纯文本中满足某正则式的文字等。   本代码作者:大黑。   本爬虫程序的速度如下:   10线程最快大概400个链接每分钟   6-8线程最快大概200-300个链接每分钟   2-4线程最快大概150-200个链接每分钟   单线程最快大概70-100个链接每分钟   之所以用多线程异步抓取完全是出于效率考虑,本程序多线程同步并不能带来速度的提升,只要抓取的网页不要太多重复和冗余就可以,异步并不意味着错误。

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • Visual C# WPF图片拉伸功能一例
    Visual C# WPF图片拉伸功能一例,如图所示的运行效果,鼠标放在两幅图片的交接处,鼠标形状会变为拖动的样式,按住鼠标左键即可拖动图片向左、向右或向上向下拉伸,图片被拖拉变大或变小,非比例缩放,这种拖放是不按比例来的,完全由你鼠标控制的自由拖放功能。
    2022-03-25 07:32:22下载
    积分:1
  • C# 根据用户输入的防伪生成随机数
    C# 根据用户输入的防伪码生成随机数,测试时请输入防伪码的长度和个数(以空格来分开),请键入任意字符以结束,这个过程适时显示生成个数:{0},运行时间:{1}ms。根据指定字符生成随机数,这个在平时应用广泛,希望这个源码在生成随机数方面会给你一定参考。
    2022-02-01 00:12:10下载
    积分:1
  • C# 利用数据绑定控件ListView修改数据
    cmd.CommandText = "update 员工表 set 员工姓名= +//设置将要执行的SQL语句    this.textBox2.Text + ,基本工资= + this.textBox4.Text +    ,工作评价= + this.textBox5.Text +    where 员工编号= + this.textBox1.Text + ";   con.Open();//打开数据库连接   cmd.Connection = con;//设置命令对象的连接属性   cmd.ExecuteNonQuery();//执行SQL语句   con.Close();//关闭数据库连接   return true;//方法返回布尔值
    2022-01-24 18:10:16下载
    积分:1
  • C#在列上加入计算
    C#在列上加入计算,这个主要是指SQL查询语句的列上面,如下面定义的语句,进行合并计算后,被执行:   private DataTable GetMessage()   {    string P_Str_ConnectionStr = string.Format(//创建数据库连接字符串    @"server=WIN-GI7E47AND9RLS;database=db_TomeTwo;uid=sa;pwd=");    string P_Str_SqlStr = string.Format(//创建SQL查询字符串    "SELECT 学生编号,学生姓名,高数+外语 AS 高数加外语的分数 FROM tb_Grade");    SqlDataAdapter P_SqlDataAdapter = new SqlDataAdapter(//创建数据适配器    P_Str_SqlStr, P_Str_ConnectionStr);    DataTable P_dt = new DataTable();//创建数据表    P_SqlDataAdapter.Fill(P_dt);//填充数据表    return P_dt;//返回数据表   }
    2022-08-18 16:13:26下载
    积分:1
  • C# 自定义DataGridView控件列单元格外观
    C# 自定义DataGridView控件列单元格外观的例子源码,这里只是一个演示,教会一种方法,因此仅定制DataGridView第一列单元格外观。最好是把数据库连接好,有数据读出这样能更好的看到自定义单元格的效果,详细的实现代码请下载源码包。
    2022-08-24 18:26:07下载
    积分:1
  • C# 查询订购产品ID为51的客户信息
    C# 查询订购产品ID为51的客户信息,需要连接数据库来测试,相关代码分享如下:   //查询订购产品ID为51的客户信息   SqlConnection MyConnection = new SqlConnection(@"Data Source =luobin-PCSQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True");   MyConnection.Open();   DataSet MyDataSet = new DataSet("CustomerOrdersDetails");   SqlDataAdapter MyCustomerAdapter = new SqlDataAdapter("SELECT * FROM Customers", MyConnection);   MyCustomerAdapter.Fill(MyDataSet, "Customers");   DataTable MyTable = new DataTable();   MyCustomerAdapter.Fill(MyTable);   SqlDataAdapter MyOrderAdapter = new SqlDataAdapter("SELECT * FROM Orders", MyConnection);   MyOrderAdapter.Fill(MyDataSet, "Orders");   SqlDataAdapter MyDetailAdapter = new SqlDataAdapter("SELECT * FROM [Order Details]", MyConnection);   MyDetailAdapter.Fill(MyDataSet, "OrderDetails");   MyConnection.Close();   MyDataSet.Relations.Add("CustOrders",MyDataSet.Tables["Customers"].Columns["CustomerID"],MyDataSet.Tables["Orders"].Columns["CustomerID"]).Nested = true;   MyDataSet.Relations.Add(
    2023-04-28 12:35:03下载
    积分:1
  • C# 合并DataGridView控件单元格数据
    C# 合并DataGridView控件单元格,合并列相同的内容,结合数据库来实现:   if (conn.State == ConnectionState.Closed)//判断数据库是否关闭    conn.Open();//打开数据库   string selectString = "select * from tb_emp";//定义查询字符串   Adapter = new SqlDataAdapter(selectString, conn);//实例化填充数据集和更新数据库的对象   Adapter.Fill(dataSet);//填充dataSet数据集   dataGridView1.DataSource =dataSet.Tables[0];//为dataGridView1设置数据源   conn.Close();//关闭数据库   填写单元格内容,相同的内容的单元格只填写第一个,对每一列相同单元格进行合并
    2023-08-28 20:40:03下载
    积分:1
  • C#以二进制格式打开和保存文件
    C#使用BinaryWriter、BinaryReader对象分别保存和读取二进制文件,程序分两部分,先来看第一部分:   C#以二进制格式保存文件:设置保存文件的格式:   saveFileDialog1.Filter = "二进制文件(*.dat)|*.dat";   if (saveFileDialog1.ShowDialog() == DialogResult.OK)   {    //使用“另存为”对话框中输入的文件名实例化FileStream对象    FileStream myStream = new FileStream(saveFileDialog1.FileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);    //使用FileStream对象实例化BinaryWriter二进制写入流对象    BinaryWriter myWriter = new BinaryWriter(myStream);    //以二进制方式向创建的文件中写入内容    myWriter.Write(textBox1.Text);    //关闭当前二进制写入流    myWriter.Close();    //关闭当前文件流    myStream.Close();    textBox1.Text = string.Empty;   }   打开文件时同样也是以二进制来打开读取文件内容:   //设置打开文件的格式   openFileDialog1.Filter = "二进制文件(*.dat)|*.dat";   if (openFileDialog1.ShowDialog() == DialogResult.OK)   {    textBox1.Text = string.Empty;    //使用“打开”对话框中选择的文件名实例化FileStream对象    FileStream myStream = new FileStream(openFileDialog1.FileName, FileMode.Open, FileAccess.Read);    //使用FileStream对象实例化BinaryRea
    2022-02-14 18:03:07下载
    积分:1
  • C# 向StatusBar状态栏控件中添加窗格面板
    C# 向StatusBar状态栏控件中添加窗格面板及文字,也就是把窗口的状态栏分栏,分隔成若干个小区域,显示不同的信息,比如文字提示或图标等。   向StatusBar控件添加窗格面板   StatusBar statusBar1=new StatusBar();   statusBar1.Panels.Add("中华人民共和国");   statusBar1.Panels.Add("重庆市");   statusBar1.Panels.Add("罗斌");   statusBar1.Panels[0].AutoSize = StatusBarPanelAutoSize.Contents;   statusBar1.Panels[1].AutoSize = StatusBarPanelAutoSize.Spring;   statusBar1.Panels[2].AutoSize = StatusBarPanelAutoSize.Contents;   statusBar1.Panels[0].BorderStyle =StatusBarPanelBorderStyle.Raised;   statusBar1.Panels[1].BorderStyle = StatusBarPanelBorderStyle.Sunken;   statusBar1.Panels[2].BorderStyle = StatusBarPanelBorderStyle.Raised;   statusBar1.Panels[2].Icon = new System.Drawing.Icon( @"Error.ico");   statusBar1.ShowPanels = true;   this.Controls.Add(statusBar1);
    2022-05-17 04:53:06下载
    积分:1
  • C# 在LINQ to XML中将XML文件转换为CSV文件的例子
    C# 在LINQ to XML中将XML文件转换为CSV文件的例子源码,转换的结果请参考如图所示:   private void button1_Click(object sender, EventArgs e)   {//在LINQ to XML中将XML文件转换为CSV文件    TextReader MyReader = new StringReader(this.textBox1.Text);    XElement MyCustomers= XElement.Load(MyReader);    MyReader.Close();    string MyInfo =    (from MyElement in MyCustomers.Elements("客户")    select    String.Format("{0},{1},{2},{3},{4}",    (string)MyElement.Element("客户ID"),    (string)MyElement.Element("公司名称"),    (string)MyElement.Element("城市") + (string)MyElement.Element("地址"),    (string)MyElement.Element("联系人姓名"),    Environment.NewLine    )    ).Take(10).Aggregate(new StringBuilder(),(MySubString, MyString)=>MySubString.Append(MyString),MySubString=>MySubString.ToString());    MessageBox.Show(MyInfo, "信息提示");   }
    2023-04-08 15:00:04下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载