首页 > 解决方案 > 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)
            {

            }
        }

标签: c#

解决方案


首先编写代码以获取 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);
    }
}

推荐阅读