C# 使用asp.net web表单从网页中提取文本内容
我正在尝试将页面加载到may asp.net web表单,并仅从中提取文本,然后将提取的文本显示在C# 使用asp.net web表单从网页中提取文本内容,c#,asp.net,webforms,C#,Asp.net,Webforms,我正在尝试将页面加载到may asp.net web表单,并仅从中提取文本,然后将提取的文本显示在Areatext 像这样: 我的代码是: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <
Areatext
像这样:
我的代码是:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
#form1 {
height: 500px;
width: 1199px;
}
.auto-style1 {}
#TextArea1 {
height: 288px;
width: 1157px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<asp:Button ID="Button1" runat="server" Text="Clike me"
OnClick="Button1_Click" OnClientClick="aspnetForm.target ='_blank';"
Width="160px" CssClass="auto-style1" Height="32px" />
<br />
<br />
<asp:RadioButtonList ID="RadioButtonList1" runat="server">
<asp:ListItem>CNN</asp:ListItem>
<asp:ListItem>BBC</asp:ListItem>
<asp:ListItem>FOX</asp:ListItem>
</asp:RadioButtonList>
<br />
<br />
<textarea id="TextArea1" name="S1" runat="server" ></textarea></form>
</body>
</html>
但我有这个错误
WebBrowser wb = new WebBrowser();
无法实例化ActiveX控件“8856f961-340a-11d0-a96b-00c04fd705a2”,因为当前线程不在单线程单元中
因此,我做错了什么,请提前给予帮助和感谢我从未尝试在对象引用中使用WebBrowser,但我知道这是一个web表单,意味着您将收到回帖,如果您每次都重新实例化浏览器引用,它将不会像页面对象那样运行。我将只使用Page对象,您可以收集所需的任何控件和方法,同时还可以利用请求/响应命名空间。我还将匹配radiobuttonlist控件,如下面的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
string url;
RadioButtonList rdl = new RadioButtonList();
url = rdl.SelectedItem.Text;
}
}
当然,您只需从基于标记的RadioButtonList中获取。SelectedItem.Text
,而不是构建一个
我检查过了,而且似乎WebBrowser
对象在System.Windows.Forms
下。根据我的经验,您永远不想在Web表单中使用该库(使用MsgBox
的糟糕体验)
我将使用上面的示例进行重构
Response.Redirect(url);
希望有帮助 > P>您可能需要考虑使用基于不同的自动化控制的方法,例如WATIN(C.F)或类似HTML敏捷包(C.F)< P>。下面是一个示例代码,取自: 示例代码显示如何下载网页,您可以尝试以下代码(摘自):
Response.Redirect(url);
var root = doc.DocumentNode;
var sb = new StringBuilder();
foreach (var node in root.DescendantNodesAndSelf())
{
if (!node.HasChildNodes)
{
string text = node.InnerText;
if (!string.IsNullOrEmpty(text))
sb.AppendLine(text.Trim());
}
}
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");