我在这里要做的是从html页面中提取[...]。这将是动态的,而不是硬编码的页面,它可以是包含以下内容的任何网站:
我使用htmlagilitypack做得很好,阅读后我认为这是最好的方法。
代码:
capturer = new CameraVideoCapturer()
我遇到麻烦的部分是从 form_html 引出所有html字段,我需要特定的数据,例如输入字段的排序方式如下:
public void ExtractFormFields(string form_html) {
// here we will extract the <form> fields input / select / radio / button
// an example of an extracted and sorted for is ...
// https://www.wraithseo.com/register.php
// id|txtUsername|0|0
// id|txtPassword|0|0
// id|txtPassword2|0|0
// id|txtEmail|0|0
// id|txtCountry|0|SELECT
// name|submitRegistration|0|BUTTON_CLICK
// extracted fields will be added to a multiline textbox ...
}
private void BtnAnalyzeForm_Click(object sender, EventArgs e)
{
// extract all data between <form[...]</form> ...
// load the url ...
var htmlWeb = new HtmlWeb();
var doc = htmlWeb.Load(txtBoxNavigateToUrl.Text);
// get the <form...</form> from tyhe html page ...
var form = doc.DocumentNode.SelectSingleNode("//form");
// form stored to a variable ...
var form_data = form.OuterHtml;
// test ...
Helpers.ReturnMessage(form_data);
// send the html to the ExtractFormFields method for extraction and sorting ...
ExtractFormFields(form_data);
}
我需要从上面的测试字段中提取此文件(以这种格式):
<input type="text" name="textfield" value="" />
如果是:
name|textfield
那么它将是:
<input type="text" id="textfield" value="" />
有没有一种方法可以使用htmlagilitypack或其他库轻松实现?我可以使用regex来做到这一点,例如:
id|textfield
与 if (inputHtml.Contains("id="))
{
Match text_m = Regex.Match(inputHtml, @"id=""(.*?)""", RegexOptions.Singleline);
if (text_m.Success)
{
macroCode = "id|" + text_m.Groups[1].Value);
}
}
相同,但是是否有更好的方法呢?任何帮助表示赞赏。