gpt4 book ai didi

c# - 使用 HtmlAgilityPack 从 html 中提取值

转载 作者:行者123 更新时间:2023-11-30 22:14:20 25 4
gpt4 key购买 nike

我是 c# 和 htmlagilitypack 的新手,我一直在尝试获取 signup_form_id 的值这是 2079787163

<form name="setupform" id="setupform" method="post" action="/signup/" target="_top">
<input type="hidden" name="form_type" value="blog" />
<input type="hidden" name="stage" value="" />
<input type="hidden" name="loc" value="signup" />
<input type='hidden' name='signup_form_id' value='2079787163' /><input type="hidden" id="_signup_form" name="_signup_form" value="9783b65654" />

这是我的代码

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.Load("https://signup.wordpress.com/signup/");
var value = doc.DocumentNode.SelectSingleNode("//form[@name='signup_form_id'");
Console.WriteLine(value.InnerText);

我知道我的 xpath 表达式确实有问题,对此我真的一无所知。有哪位好心人可以给点建议吗?非常感谢!

最佳答案

首先,您的代码在 doc.Load 行失败,因为该“Load”方法不支持 URI,仅支持文件路径。您应该使用 HtmlWebLoad 方法来下载 HTML。

其次,你的XPath中的缺陷:

  • 你忘记了右括号]
  • 没有名称设置为 signup_form_id
  • 的表单

总之,您应该按如下方式修改您的代码:

var url = "http://signup.wordpress.com/signup/";

var htmlWeb = new HtmlWeb();
var doc = htmlWeb.Load(url);

var value = doc.DocumentNode.SelectSingleNode("//form[@id='setupform']");
Console.WriteLine(value.OuterHtml);

更新:很高兴您澄清了问题;我最初对这个问题的理解是错误的。

看起来您正在寻找 input 标签,而不是 form。因此,应该修改您的 XPath 以满足此要求。

这是读取所需数据的代码:

var url = "http://signup.wordpress.com/signup/";

var htmlWeb = new HtmlWeb();
var doc = htmlWeb.Load(url);

var signupFormIdElement = doc.DocumentNode
.SelectSingleNode("//input[@name='signup_form_id']");

var signupFormId = signupFormIdElement.GetAttributeValue("value", "");

Console.WriteLine(signupFormId);

关于c# - 使用 HtmlAgilityPack 从 html 中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18557674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com