【问题标题】:XPATH Contain() Function Not Working for Multiple <div> Tags with Same NameXPATH Contain() 函数不适用于具有相同名称的多个 <div> 标记
【发布时间】:2014-05-20 03:41:20
【问题描述】:

我正在尝试抓取 XML 代码的以下部分(仅摘录)。第二个表单项是我要抓取的内容:

<div class="form-item">
<a href="http://www.avaopera.org" target="_blank" rel="" class="">http://www.avaopera.org</a>
</div>
<div class="form-item">
<script type="text/javascript">
document.write('*[block of text]*')
</script>
<a href="mailto:ademarco@avaopera.org">ademarco@avaopera.org</a>
</div>

我将以下 xpath 查询与包含函数一起使用,因为有多个表单项标签://div[@class='form-item' and contains(.,'@')]/a/text()

此查询不起作用。我尝试删除/a/text(),它显示&lt;script&gt; 中的文本,但不显示标签文本。

我做错了什么?

【问题讨论】:

  • 下次请使用代码块。您的代码被解释为标记,很难将其取回。此外, 字符被删除了。

标签: xpath screen-scraping contains


【解决方案1】:

如果我正确理解您的目标,您的目标是 &lt;div&gt; 中的文本,而不是 &lt;a&gt; 中的文本。

尝试改用//div[@class='form-item' and contains(a/text(),'@')]/a/text(),因为这将搜索&lt;div&gt; 中的子&lt;a&gt; 元素,而不是其父元素。

【讨论】:

  • 感谢您的回复!您建议的代码不返回任何数据。这也不返回任何东西://div[@class='form-item' and contains(a/@href,'@')] 我已经尝试了一大堆其他组合,但无论出于何种原因,我都无法访问&lt;a&gt; 块中的代码!有输入吗?
  • 我使用了答案中给出的 XPath,并从您的问题中提供的 XML 中取回了包含电子邮件地址的 &lt;div&gt; 块,所以是的,它确实返回了数据。看起来你正在执行它的实现。
  • 嗯,这很奇怪。我使用 importXML 命令从电子表格中调用我的 XPATH 命令有什么不同吗?如果是这样,那么(更好的)替代方法是什么?谢谢!
  • 您提供的 XML 是否包含您要查询的全部内容?如果是这样,那么它将失败,因为它不是完整的 XML,没有开始/结束标签。我为我的测试添加了这些,因为我认为这只是一个摘录。如果您认为这与您调用它的位置有关,请尝试使用电子表格中的模拟数据进行更简单的测试,并确保首先有效。
  • 所以,这是我正在查询的网站的链接:philaculture.org/resources/member-directory/11185/…。你能告诉我你的代码在你直接查询网站时是否有效吗?
猜你喜欢
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 2014-05-03
  • 2017-03-29
  • 1970-01-01
  • 2011-09-25
  • 2015-05-06
  • 1970-01-01
相关资源
最近更新 更多