我正在使用Html Agility Pack为网站制作自动化应用程序。 网站上的每个产品都有不同的html代码,我试图从产品中获取该代码。
这是网站和示例产品:Click here
这是我目前的代码:
var webGet = new HtmlWeb();
var doc = webGet.Load(txtLink.Text);
HtmlNodeCollection collection = doc.DocumentNode.SelectNodes("//*[contains(@id,'size')]");
foreach (var node in collection)
{
var Size = node.InnerHtml.ToString();
txtLog.Text += Environment.NewLine + Size;
}
以下是示例产品的响应:
<option value="33455">Small
<option value="33456">Medium
<option value="33457">Large
<option value="33458">XLarge
如果您不想查看网站,这就是项目的html代码:
<select name="size" id="size"><option value="33455">Small</option>
<option value="33456">Medium</option>
<option value="33457">Large</option>
<option value="33458">XLarge</option>
</select>
我想要发生什么:
我输入商品的产品链接并选择尺码。如果找到所选尺寸,则仅返回该尺寸的尺寸代码。例如,我使用示例项并选择Medium,因此应用程序应返回33456。
答案 0 :(得分:0)
使用LINQ和不区分大小写的匹配实现此目的的一种方法:
var size = "xlarge";
var option = document
.GetElementbyId("size")
.ChildNodes
.Where(x => x.Name == "option"
&& x.NextSibling.InnerText
.IndexOf(size, StringComparison.OrdinalIgnoreCase) != -1)
.FirstOrDefault();
var result = option != null
? option.Attributes["value"].Value
: "not found";
Console.WriteLine("{0}: {1}", size, result);