c# - C# 多功能单击按钮
问题描述
我有一个问题,但我不知道如何搜索它。
我用 c# 在 Visual Studio 上做了一个简单的机器人。当我在文本框中写入链接时,机器人会进入网站并获取标题,然后将其写入另一个文本框。没关系。
之后,我创建了一个 mssql 数据库。例如有 30 条线路,30 条不同的链接。当我单击按钮时,我希望机器人访问每一行的每个网站并将它们的标题带到数据库中。
我可以这样做吗?
我正在使用 Visual Studio
private void simpleButton2_Click(object sender, EventArgs e)
{
verial(txt_kaynak.Text, "//*[@id='cph1_lblKabulTar']", txtbox_tarihyaz);
}
public void verial(string Url, string xpath, TextBox Sonuc)
{
try
{
url = new Uri(Url);
}
catch (UriFormatException)
{
if (MessageBox.Show("hata-1!", "Hata", MessageBoxButtons.OK) == DialogResult.OK)
{
}
}
catch (ArgumentNullException)
{
if (MessageBox.Show("hata-2!", "Hata", MessageBoxButtons.OK) == DialogResult.OK)
{
}
}
WebClient client = new WebClient();
client.Encoding = Encoding.UTF8;
try
{
html = client.DownloadString(url);
}
catch (WebException)
{
if (MessageBox.Show("hata-3!", "Hata", MessageBoxButtons.OK) == DialogResult.OK)
{
}
}
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
try
{
// Sonuc.Items.Add(doc.DocumentNode.SelectSingleNode(xpath).InnerText);
txtbox_tarihyaz.Text = doc.DocumentNode.SelectSingleNode(xpath).InnerText;
}
catch (NullReferenceException)
{
if (MessageBox.Show("hatalı xpath!", "Hata", MessageBoxButtons.OK) == DialogResult.OK)
{
}
}
解决方案
首先编写代码以获取 URL 列表。它可能看起来像这样:
public IEnumerable<string> GetListOfUrls()
{
using (var conn = new SqlConnection(connectionString)
{
var cmd = new SqlCommand("SELECT Url FROM List", conn);
var reader = cmd.ExecuteReader();
while (reader.Read())
{
yield return reader.GetString(0);
}
}
}
然后在您的点击处理程序中调用它并对其进行迭代,为每一行调用您的方法:
private void simpleButton2_Click(object sender, EventArgs e)
{
var list = GetListOfUrls();
foreach (var url in list)
{
verial(url, "//*[@id='cph1_lblKabulTar']", txtbox_tarihyaz);
}
}
推荐阅读
- apache-spark - 为什么我的 spark 应用程序太慢了?
- javascript - Gulp:'function()'不可分配给参数
- dart - 如何在 Flutter 中使用共享偏好
- azure - Azure Sql 中的 Active Directory(AD) 身份验证不起作用
- laravel - 多级关系 whereHas on eloquent Model in Laravel
- google-app-engine - Google App Engine 实例的 IP 会以特定的时间间隔自动更改
- docker-swarm - docker 容器从一个节点切换到另一个节点而不会耗尽或重新启动节点
- html - 如何围绕圆圈创建文本(五分之一圈)
- android - 如何在回收器视图中为 RadioButton 添加动作事件?
- css - 带CSS的标题和副标题的领导者