首先,我仍然是一个初学者,尤其是在网络方面。
我正在尝试从使用 winforms 应用程序在浏览器中打开的网页中读取文本框的内容,但我无法修改网页本身的源代码。可悲的是,我正在寻找的字符串并不是简单地写在页面的源代码中。所以我不能只读取页面源代码并解析它。看起来文本框的内容是通过 javascript 填充的。
一般来说,我不知道从哪里开始。非常欢迎任何建议。
此外,我不确定还应该在此处添加哪些其他信息。我不知道从哪里开始,所以我还没有任何代码可以显示。
编辑:
我一直在尝试使用敏捷包,但我仍然不确定如何获得我需要的东西。这是到目前为止我的代码:
WebClient client = new WebClient();
String html = client.DownloadString(URL);
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//div[@class='ember-view']"))
{
HtmlAttribute div = link.Attributes["div"];
if (div != null)
{
outputBox.Text += div.Value;
}
}
当我运行代码时,我得到:
发生了“System.NullReferenceException”类型的未处理异常。 附加信息:未将对象引用设置为对象的实例。
当我进入网页并执行 Inspect Element 时,我得到了这个(我只复制了几行):
<html class="no-js" lang="en">
<head></head>
<body class="ember-application" lang="en-US" data-environment="production">
<div id="booting" style="display: none;"></div>
<div id="ember2493" class="ember-view">
<div id="alert" class="ember-view"></div>
我不知道如何到达这一行的内部代码:
<div id="alert" class="ember-view"></div>
另外,如果这是我明显遗漏的东西,我很抱歉,但同样,这对我来说是全新的。感谢您迄今为止的帮助。
最佳答案
你知道吗Html Agility Pack ?我总是使用 Agility Pack 进行 html 爬行。
HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
{
HtmlAttribute att = link["href"];
att.Value = FixLink(att);
}
doc.Save("file.htm");
关于c# - 使用 C# 读取隐藏网站文本框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22161041/