0
这是我的要求。有一个公共网站,它将字母数字字符串作为输入,并将数据检索到表格元素中(通过按钮单击)。表格元素有几个标签,它们会填充相应的数据。我需要一个可以检查网站数据库中是否存在特定字符串的工具/解决方案。如果是,则检索该字符串的所有出现的所有ID。查看网站的“查看源代码”(没有使用JavaScript),我注意到输入元素名称和按钮元素名称,并借助现有样本,我得到了一个可行的解决方案。下面是可用的代码,但我想检查是否有更好更快的方法。我知道下面的代码有一些问题,如“无限循环”问题和其他问题。但我基本上正在寻找可以快速工作一百万条记录的备用解决方案。C#中更好的方法在第三方网站上搜索数据
namespace SearchWebSite
{
public partial class Form1 : Form
{
bool searched = false;
long i;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
i = 1;
WebBrowser browser = new WebBrowser();
string target = "http://www.SomePublicWebsite.com";
browser.Navigate(target);
browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(XYZ);
}
private void XYZ(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser b = null;
if (searched == false)
{
b = (WebBrowser)sender;
b.Document.GetElementById("txtId").InnerText = "M" + i.ToString();
b.Document.GetElementById("btnSearch").InvokeMember("click");
searched = true;
}
if (b.ReadyState == WebBrowserReadyState.Complete)
{
if (b.Document.GetElementById("lblName") != null)
{
string IdNo = "M" + i.ToString();
string DateString = b.Document.GetElementById("lblDate").InnerHtml;
string NameString = b.Document.GetElementById("lblName").InnerHtml;
if (NameString != null && (NameString.Contains("XXXX") || NameString.Contains("xxxx")))
{
using (StreamWriter w = File.AppendText("log.txt"))
{
w.WriteLine("Id {0}, Date {1}, Name {2}", IdNo, DateString, NameString);
i = i + 1;
searched = false;
}
}
else
{
i = i + 1;
searched = false;
}
}
else
{
i = i + 1;
searched = false;
}
}
}
}
}
'i = i + 1'。有趣:-) –
这绝对是更适合[代码评论](http://codereview.stackexchange.com/) – Jonesopolis
也为什么你关心无限循环?我甚至没有看到一个循环 – Jonesopolis