2

我正在构建一个网页抓取工具来获取网页的信息。我想要正确的 xpath 表示法来获取信息。

<div class="inner">
<div class="col">
  <h2><a href="land-in-kadawatha-for-sale-gampaha-442">Land in Kadawatha</a></h2>
  <div class="meta">
      <div class="date"></div>
      <span class="category">Other Lands</span>,
    <span class="location">Gampaha</span>
  </div>
</div>

我如何使用 xpath 访问“Kadawatha 的土地”。

4

3 回答 3

2

没有 xsl 的独立 XPath 1:

//div[contains(concat(" ", @class, " "), " inner ")]/div[contains(concat(" ", @class, " "), " col ")]/h2[1]/a
于 2013-06-21T20:20:46.350 回答
0

使用此功能:

<xsl:function name="markup:has-class" as="xs:boolean">
   <xsl:param name="el" as="element()" />
   <xsl:param name="class-name" as="item()" />

   <xsl:sequence select="$el/@class and tokenize(upper-case(normalize-space($el/@class)), ' ') = upper-case(string($class-name))" />
</xsl:function>

你可以做:

*[markup:has-class(., 'inner')]/*[markup:has-class(., 'col')]//h2/string()

根据您的上下文节点进行相应调整。

于 2013-06-21T20:12:05.273 回答
0

基于该片段

//div[@class='col']/h2/a

那么你的代码看起来像

IWebElement element = driver.FindElement(By.XPath("//div[@class='col']/h2/a"));
string elementText = element.Text();
于 2016-04-27T16:14:04.203 回答