获取包含在 <li> 标签中的文本
Getting text enclosed by <li> tags
你好我的 html 文件是这样的
<div class="panel-body sozluk">
<ol>
<li>kitap <code>isim</code> </li>
</span> </ol>
</div>
我需要获取包含在 "li" 标签中的值。
这是我的 Xpath
//*[@id="wrap"]/div[2]/div[5]/div/div/div[1]/div[1]/div/div[1]/div[2]
这是我目前尝试过的方法
HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
document.Load("word.html");
var v = document.DocumentNode
.SelectNodes("//[@id='wrap']/div[2]/div[5]/div/div/div[1]/div[1]/div/div[1]/div[2]/ol ")
.Select(x => x.ChildNodes["li"].InnerText);
应用程序崩溃everytime.How我可以这样做吗
你需要先看看你的HTML:
<div class="panel-body sozluk">
<ol>
<li>kitap <code>isim</code> </li>
</span> </ol>
</div>
这是无效的。你有一个 div
,里面有一个 ol
,里面有一个 li
,里面有一个 code
。但是,您正在关闭 div
中的 span
。 span
,如果完全打开,则在 div
之外打开,其中包含 span
的关闭。在尝试从中提取内容之前,请确保您拥有有效的 html。并构建你的代码,我相信如果你的代码是结构化的,你会发现这个问题。
您的 HTML 有点乱,但如果您不介意使用其他软件包,
使用 Fizzler for HTMLAgilityPack,这将允许您使用类似于 jquery 的选择器来获取它们,而不是 xpath。
var liList = document.DocumentNode.QuerySelectorAll("li");
首先,您的 XPath 无效,因为它缺少开头的星号 (*
) :
var v = document.DocumentNode
.SelectNodes("//[@id='wrap']/div[2]/div[5]/....")
^here, right after '//'
如此冗长的 XPath 很脆弱,总是喜欢通过 id 或 class 或其他一些属性来选择元素,可能的示例:
var v = document.DocumentNode
.SelectNodes("//*[@id='wrap']//div[@class='panel-body sozluk']/ol/li")
.Select(o => o.InnerText);
你好我的 html 文件是这样的
<div class="panel-body sozluk">
<ol>
<li>kitap <code>isim</code> </li>
</span> </ol>
</div>
我需要获取包含在 "li" 标签中的值。 这是我的 Xpath
//*[@id="wrap"]/div[2]/div[5]/div/div/div[1]/div[1]/div/div[1]/div[2]
这是我目前尝试过的方法
HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
document.Load("word.html");
var v = document.DocumentNode
.SelectNodes("//[@id='wrap']/div[2]/div[5]/div/div/div[1]/div[1]/div/div[1]/div[2]/ol ")
.Select(x => x.ChildNodes["li"].InnerText);
应用程序崩溃everytime.How我可以这样做吗
你需要先看看你的HTML:
<div class="panel-body sozluk">
<ol>
<li>kitap <code>isim</code> </li>
</span> </ol>
</div>
这是无效的。你有一个 div
,里面有一个 ol
,里面有一个 li
,里面有一个 code
。但是,您正在关闭 div
中的 span
。 span
,如果完全打开,则在 div
之外打开,其中包含 span
的关闭。在尝试从中提取内容之前,请确保您拥有有效的 html。并构建你的代码,我相信如果你的代码是结构化的,你会发现这个问题。
您的 HTML 有点乱,但如果您不介意使用其他软件包, 使用 Fizzler for HTMLAgilityPack,这将允许您使用类似于 jquery 的选择器来获取它们,而不是 xpath。
var liList = document.DocumentNode.QuerySelectorAll("li");
首先,您的 XPath 无效,因为它缺少开头的星号 (*
) :
var v = document.DocumentNode
.SelectNodes("//[@id='wrap']/div[2]/div[5]/....")
^here, right after '//'
如此冗长的 XPath 很脆弱,总是喜欢通过 id 或 class 或其他一些属性来选择元素,可能的示例:
var v = document.DocumentNode
.SelectNodes("//*[@id='wrap']//div[@class='panel-body sozluk']/ol/li")
.Select(o => o.InnerText);