【发布时间】:2015-07-16 00:17:10
【问题描述】:
这是我的 HTML 文件的样子:
<a href='http://crossfitquantico.blogspot.com/' target='_blank'>CrossFit Quantico</a> - Quantico, VA<br />
<a href='http://www.crossfitcherrypoint.com' target='_blank'>CrossFit Cherry Point</a> - Havelock, NC<br />
<a href='http://crossfitpentagon.com/' target='_blank'>CrossFit Pentagon</a> - Washington, DC<br />
<a href='http://crossfitwtbn.blogspot.com/' target='_blank'>CrossFit WTBN</a> - Quantico, VA<br />
<a href='http://cfnewriver.blogspot.com/' target='_blank'>CrossFit New River</a> - Jacksonville, NC<br />
<a href='http://xfitmiramar.com' target='_blank'>CrossFit Miramar</a> - San Diego, CA<br />
<a href='http://www.crossfitfortmeade.com/' target='_blank'>CrossFit Fort Meade</a> - Odenton, MD<br />
我能够提取链接内容/副本和 URL,但我还需要提取 </a> 结尾和下一个 <a> 开头之间的信息,无论是在 <br /> 之前.例如,在第一行我需要提取"Quantico,&nbsp;VA"。
这是我的部分代码,我从中提取了我需要的部分信息: 这是我目前正在做的事情(一旦我得到页面对象,我将有一个循环来遍历我拥有的每一行 html 源代码,以便提取我需要的所有数据):
page = Nokogiri::HTML(open("http://www.crossfit.com/cf-info/main_affil.htm"))
if page.text != ""
## Get the URL and Name
if page.css("a")[i] != nil
name = page.css("a")[i].text
else
name = 'NA'
end
if page.css("a")[i] != nil
url = page.css("a")[i]["href"]
else
url = 'NA'
end
end if
【问题讨论】:
-
这是一种非常粗暴的 HTML 解析方式。无论如何,你可以用'-'分割每一行,然后在数组中获取最后一个值,这就是你所追求的。
-
显示您用于提取 URL 的相关代码,以便为我们提供更多上下文
-
欢迎来到 Stack Overflow。我们并不真正关心你的“新手”,我们只是喜欢好问题。您需要展示您的代码的最小示例,以便我们可以看到您缺少什么。就像你要求我们为你写的一样。此外,您的 HTML 格式不符合您的要求。而不仅仅是链接和尾随中断,应该有包装标签,最好是
<html><body>...</body></html>。 Stack Overflow 需要完整的示例来在寻求帮助调试时演示问题。 -
感谢您提供的所有帮助。对不起,没有发布我的代码,因为它非常基本,但我在上面的问题中添加了部分代码。再次感谢!
-
你需要正确缩进你的代码。这是您遇到的最好的调试技巧之一。
标签: html ruby-on-rails ruby xpath nokogiri