-
一个C# 多线程的网页异步抓取类文件代码
一个C#编写的多线程异步抓取网页的网络爬虫控制台程序类代码,这个类实现对网页URL指定内容网页的抓取,并抓取 内容中的链接、文字内容、从HTML代码中分析出链接信息等,本类中还定义了大量的私有方法,从这些私有方法中可从HTML文本中提取出一定字数的纯文本、提取网页中一定字数的纯文本,包括链接文字、提取一定数量的链接,该链接的URL满足某正则式、提取本网页的纯文本中满足某正则式的文字等。
本代码作者:大黑。
本爬虫程序的速度如下:
10线程最快大概400个链接每分钟
6-8线程最快大概200-300个链接每分钟
2-4线程最快大概150-200个链接每分钟
单线程最快大概70-100个链接每分钟
之所以用多线程异步抓取完全是出于效率考虑,本程序多线程同步并不能带来速度的提升,只要抓取的网页不要太多重复和冗余就可以,异步并不意味着错误。
- 2023-05-03 15:55:03下载
- 积分:1
-
C# winform邮件发送 可抄送、密送、发附件
C# 可抄送、密送、发附件的Winform发邮件程序,邮件主是信息的填写部分要注意格式不能错,抄送和密送时多个收件人以分号隔开,可连续发送多个附件,多个附件以分号隔开。发送邮件采用了发送邮件函数的方式,方便以模块化调用 ,发邮件还可异步发送,SMTP 服务器要求安全连接需要设置smtp.EnableSsl = Ssl属性。
请注意:发送邮件前,请先配置然后再发邮件(注:以上参数为格式示例,需自行更改为实际真实有效的信息)。
发邮件的整体用户界面如测试图所示。
- 2023-08-13 11:10:02下载
- 积分:1
-
超市版进销存系统,基于C#2010+SQLSERVER
一个功能实用强大的超市进销存系统,基于C#2010+SQLSERVER开发,属于小型的超市进销存销售管理系统,可对中小型超市进行管理,实现的功能有:
用户交互界面的实现。
对进货信息进行有效的管理。
对用户输入的数据,进行严格的数据检验,尽可能的避免人为错误。
对商品销售信息进行有效的管理。
管理商品库存信息。
系统应最大限度地实现易维护性和易操作性。
本进销存系统登录用户名为:Tsoft,密码为:111。
- 2022-07-11 01:50:34下载
- 积分:1
-
STM32飞控baseflight-master,主流飞控
STM32飞控baseflight-master,主流飞控,更新快,性能好。
- 2023-02-11 09:40:04下载
- 积分:1
-
C# DataGridView初级操作范例
这是一个C# DataGridView初级操作范例,演示了连接数据库、读取数据库、移动数据库指针到下一条、上一条记录的操作,以及将数据绑定到DataGridView控件中显示的整个过程,比较基础级的C#源码,因此希望新手参考:
private void shippersDataGridView_DataError(object sender, DataGridViewDataErrorEventArgs e)
{//如果错误发生在提交操作过程中,则在 MessageBox 中显示该错误
if (e.Exception != null && e.Context == DataGridViewDataErrorContexts.Commit)
{//测试时在Phone列中输入一个超长的字符串
MessageBox.Show(e.Exception.Message, "信息提示", MessageBoxButtons.OK);
}
}
- 2022-01-22 02:28:43下载
- 积分: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# FileInfo获取文件的各种属性
C# 创建FileInfo对象,获取文件的各种属性,可以获取到以下的文件信息:创建时间、上次访问时间、上次写入时间、文件名称、完整目录、完整路径、是否只读、文件长度。
具体的实现过程:
textBox1.Text = openFileDialog1.FileName;
FileInfo finfo = new FileInfo(textBox1.Text); //实例化FileInfo对象
string strCTime, strLATime, strLWTime, strName, strFName, strDName, strISRead;
long lgLength;
strCTime = finfo.CreationTime.ToShortDateString(); //获取文件创建时间
strLATime = finfo.LastAccessTime.ToShortDateString(); //获取上次访问该文件的时间
strLWTime = finfo.LastWriteTime.ToShortDateString(); //获取上次写入文件的时间
strName = finfo.Name; //获取文件名称
strFName = finfo.FullName;//获取文件的完整目录
strDName = finfo.DirectoryName;//获取文件的完整路径
strISRead = finfo.IsReadOnly.ToString(); //获取文件是否只读
lgLength = finfo.Length; //获取文件长度
MessageBox.Show("文件信息:
创建时间:" + strCTime + " 上次访问时间:" + strLATime + "
上次写入时间:" + strLWTime + " 文件名称:" + strName + "
完整目录:" + strFName + "
完整路径:" + strDName + "
是否只读:" + strISRead + " 文件长度:" + lgLength);
以上代码段请写入一个按钮事件中,这样当用户单击按钮时,执行上述代码。
- 2023-02-14 12:35:03下载
- 积分:1
-
C# 在程序中使用指针、十字光标、浮动窗口等不安全代码
C# 在程序中使用指针、十字光标、浮动窗口等不安全代码的实例,单击以下按钮会演示出对应功能:
在程序中显示一个浮动帮助窗口
显示等待光标
显示十字光标
对于功能实现,逐一分享源代码如下:在程序中使用指针等不安全代码:
var MyFileName = "C:atlog.txt";
var MyReader = new MyReaderClass(MyFileName);
const int MyBuffSize = 128;
byte[] MyBuffer = new byte[MyBuffSize];
ASCIIEncoding MyEncoder = new ASCIIEncoding();
var MyInfo = MyFileName + "的内容如下:";
while (MyReader.Read(MyBuffer, 0, MyBuffSize) != 0)
MyInfo += "
" + MyEncoder.GetString(MyBuffer);
MessageBox.Show(MyInfo, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
private void button2_Click(object sender, EventArgs e)
{//在程序中显示一个浮动帮助窗口
Help.ShowPopup(this, "提高程序开发效率、拓展软件应用领域", new Point(300, 350));
}
private void button3_Click(object sender, EventArgs e)
{//显示等待光标
this.Cursor = Cursors.WaitCursor;
}
private void button4_Click(object sender, EventArgs e)
{//显示十字光标
this.Cursor = Cursors.Cross;
}
- 2023-05-20 08:40:02下载
- 积分:1
-
C# 从RichTextBox 控件中提取文本内容
C# 从RichTextBox 控件中提取文本内容,并设置RichTextBox 控件中的字体大小-附完整源代码,
private void button1_Click(object sender, RoutedEventArgs e)
{//从RichTextBox 控件中提取文本内容
TextRange MyText = new TextRange(this.richTextBox1.Document.ContentStart, this.richTextBox1.Document.ContentEnd);
MessageBox.Show(MyText.Text, "RichTextBox控件中的文本内容",MessageBoxButton.OK);
}
private void button2_Click(object sender, RoutedEventArgs e)
{//设置RichTextBox 控件中的字体大小
TextRange MyText = new TextRange(this.richTextBox1.Document.ContentStart, this.richTextBox1.Document.ContentEnd);
MyText.ApplyPropertyValue(TextElement.FontSizeProperty, 36.00);
MyText.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Bold);
- 2022-09-21 17:55:02下载
- 积分:1
-
C#在图片格式转换时设置JPEG压缩级别的实现源码
C#在转换图像格式时设置JPEG压缩级别,运行程序在窗口上单击按钮后,会生成多个版本不同压缩级别的图片,图片大小字节都不一样,如下代码是实现本功能的核心代码:
Bitmap MyBitmap = new Bitmap(@"J001.jpg");
ImageCodecInfo MyDecoder = null;
ImageCodecInfo[] MyDecoders = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo MyFormat in MyDecoders)
{
if (MyFormat.FormatID == ImageFormat.Jpeg.Guid)
{
MyDecoder = MyFormat;
}
}
System.Drawing.Imaging.Encoder MyEncoder =
System.Drawing.Imaging.Encoder.Quality;
EncoderParameters MyEncoderParameters = new EncoderParameters(1);
//以50中级压缩图像
EncoderParameter MyEncoderParameter = new EncoderParameter(MyEncoder, 50L);
MyEncoderParameters.Param[0] = MyEncoderParameter;
MyBitmap.Save("J50L.jpg", MyDecoder, MyEncoderParameters);
//以100高级压缩图像
MyEncoderParameter = new EncoderParameter(MyEncoder, 100L);
MyEncoderParameters.Param[0] = MyEncoderParameter;
MyBitmap.Save("J99L.jpg", MyDecoder, MyEncoderParameters);
//以0低级压缩图像
MyEncoderParameter = new Enc
- 2022-05-18 00:19:47下载
- 积分:1