如何使用 htmlagility pack 提取表单标签?
how to extract form tag using htmlagility pack?
我在我的一个 C#
项目中使用 HtmlAgilityPack
进行抓取。我需要从网页中删除 <form>
标签。我已经搜索过如何使用 HtmlAgilityPack 提取表单标签,但找不到答案。谁能告诉我如何使用 HtmlAgilityPack
提取 <form>
标签?
private void Testing()
{
var getHtmlWeb = new HtmlWeb();
var document = getHtmlWeb.Load(@"http://localhost/final_project/index.php");
HtmlNode.ElementsFlags.Remove("form");
var aTags = document.DocumentNode.SelectNodes("//form");
int counter = 1;
StringBuilder buffer = new StringBuilder();
if (aTags != null)
{
foreach (var aTag in aTags)
{
buffer.Append(counter + ". " + aTag.InnerHtml + " - " + "\t" + "<br />");
counter++;
}
}
}
这是我的代码示例。我正在从我的 localhost
中抓取一个页面。 aTags
的计数为 1,因为页面上只有一个表单。但是当我使用但我的 StringBuilder
对象不包含任何形式的 InnerHtml 时。错误在哪里:(
这是我的 html 来源,我想从中删除 form
<!DOCTYPE html>
<html>
<head>
<!-- stylesheet section -->
<link rel="stylesheet" type="text/css" media="all" href="./_include/style.css">
<!-- title of the page -->
<title>Login</title>
<!-- PHP Section -->
<!-- Creating a connection with database-->
<!-- end of PHP Sectoin -->
</head>
<body>
<!-- now we'll check error variable to print warning -->
<!-- we'll submit the data to the same page to avoid excessive pages -->
<form action="/final_project/index.php" method="post">
<!-- ============================== Fieldset 1 ============================== -->
<fieldset>
<legend>Log in credentials:</legend>
<hr class="hrzntlrow" />
<label for="input-one"><strong>User Name:</strong></label><br />
<input autofocus name="userName" type="text" size="20" id="input-one" class="text" placeholder="User Name" required /><br />
<label for="input-two"><strong>Password:</strong></label><br />
<input name="password" type="password" size="20" id="input-two" class="text" placeholder="Password" required />
</fieldset>
<!-- ============================== Fieldset 1 end ============================== -->
<p><input type="submit" alt="SUBMIT" name="submit" value="SUBMIT" class="submit-text" /></p>
</form>
</body>
</html>
由于允许表单标签重叠,HAP 以不同方式处理它们,要将表单标签视为任何其他元素,只需通过调用删除表单标志:
HtmlAgilityPack.HtmlNode.ElementsFlags.Remove("form");
现在您的表单标签将按您预期的方式处理,您可以按照处理其他标签的方式进行处理。
我在我的一个 C#
项目中使用 HtmlAgilityPack
进行抓取。我需要从网页中删除 <form>
标签。我已经搜索过如何使用 HtmlAgilityPack 提取表单标签,但找不到答案。谁能告诉我如何使用 HtmlAgilityPack
提取 <form>
标签?
private void Testing()
{
var getHtmlWeb = new HtmlWeb();
var document = getHtmlWeb.Load(@"http://localhost/final_project/index.php");
HtmlNode.ElementsFlags.Remove("form");
var aTags = document.DocumentNode.SelectNodes("//form");
int counter = 1;
StringBuilder buffer = new StringBuilder();
if (aTags != null)
{
foreach (var aTag in aTags)
{
buffer.Append(counter + ". " + aTag.InnerHtml + " - " + "\t" + "<br />");
counter++;
}
}
}
这是我的代码示例。我正在从我的 localhost
中抓取一个页面。 aTags
的计数为 1,因为页面上只有一个表单。但是当我使用但我的 StringBuilder
对象不包含任何形式的 InnerHtml 时。错误在哪里:(
这是我的 html 来源,我想从中删除 form
<!DOCTYPE html>
<html>
<head>
<!-- stylesheet section -->
<link rel="stylesheet" type="text/css" media="all" href="./_include/style.css">
<!-- title of the page -->
<title>Login</title>
<!-- PHP Section -->
<!-- Creating a connection with database-->
<!-- end of PHP Sectoin -->
</head>
<body>
<!-- now we'll check error variable to print warning -->
<!-- we'll submit the data to the same page to avoid excessive pages -->
<form action="/final_project/index.php" method="post">
<!-- ============================== Fieldset 1 ============================== -->
<fieldset>
<legend>Log in credentials:</legend>
<hr class="hrzntlrow" />
<label for="input-one"><strong>User Name:</strong></label><br />
<input autofocus name="userName" type="text" size="20" id="input-one" class="text" placeholder="User Name" required /><br />
<label for="input-two"><strong>Password:</strong></label><br />
<input name="password" type="password" size="20" id="input-two" class="text" placeholder="Password" required />
</fieldset>
<!-- ============================== Fieldset 1 end ============================== -->
<p><input type="submit" alt="SUBMIT" name="submit" value="SUBMIT" class="submit-text" /></p>
</form>
</body>
</html>
由于允许表单标签重叠,HAP 以不同方式处理它们,要将表单标签视为任何其他元素,只需通过调用删除表单标志:
HtmlAgilityPack.HtmlNode.ElementsFlags.Remove("form");
现在您的表单标签将按您预期的方式处理,您可以按照处理其他标签的方式进行处理。