【问题标题】:How do I select text after a <p> tag, but before a nested <a> tag?如何在 <p> 标记之后、嵌套的 <a> 标记之前选择文本?
【发布时间】:2015-03-30 14:39:39
【问题描述】:

假设我的 HTML 看起来像这样:

<p> May  4 - <a href="http://auburn.craigslist.org/web/2996976345.html">residual income No experience is needed!!!</a> - <font size="-1"> (online)</font> <span class="p"> img</span></p>

我想做的只是选择文本May 4 -....即开头 p 标记之前的文本,以及开头 p 之后的第一个开头 a 标记之前的文本。

我该怎么做?类似的 CSS 选择器会是什么样子?

请注意,我不是在编写此 HTML。我正在抓取一个从中获取此代码的网站。我无法控制 HTML 输出。我只是在使用这种类型的标记,并试图从中提取合理的数据。

【问题讨论】:

  • font 标签已弃用,您不应使用它。您可以在该文本周围添加一个span,然后您就可以轻松地对其进行样式设置。

标签: html css-selectors web-scraping


【解决方案1】:

CSS 选择器无法到达裸文本节点。

但是,这对于 XPath 来说是微不足道的,如果您使用像 Nokogiri 这样的网络抓取工具或像 Selenium 这样的测试工具,则可以使用它:

//p/text()[following-sibling::a][1]

【讨论】:

  • 那我该怎么做呢? XPath 也很好......如果它在这里工作。我正在尝试使用 HTML 解析器来获取我正在寻找的特定文本。
  • @marcamillion 如果您可以控制 html 输出,请将其包装在 &lt;span&gt; 中。
  • @ghoppe 我无法控制 html 输出。我正在抓取一个页面,只想选择属于特定标签的特定文本。我只是在使用我给出的输出。
  • @marcamillion 看起来像 BoltClock 支持你。
  • @boltclock 这太完美了....除了 w3schools 站点之外,我还可以在哪里阅读更多关于 XPath 语法的信息 - 我觉得这很混乱并且对我没有多大帮助?
猜你喜欢
  • 2011-09-19
  • 2020-04-07
  • 2011-10-02
  • 1970-01-01
  • 2021-01-12
  • 2011-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多