这是我的代码:
doc = Nokogiri::HTML(open("https://feeds.feedburner.com/audiodharma"))
talks = doc.css(".regularitem")
css看起来非常简单,所以我无法弄清楚为什么我要继续为#39;会谈获得一个空数组。如果你看到我不知道的话,请告诉我--Nokogiri初学者在这里。感谢。
答案 0 :(得分:0)
如果您尝试使用cURL
或其他方法直接获取内容,您将看到您的XML如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?>
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:media="http://search.yahoo.com/mrss/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
...
如您所见,它是一个XML文件而不是HTML文件。我不知道为什么,但是当尝试打开URI 时,Nokogiri不知道如何正确处理它 - 这是一个带有浏览器样式属性的XML。它通常读得很好,我不太了解更深入的规格。
我找到的一个解决方案是使用RestClient
加载网址,一旦加载了内容,就会正确解析。你也应该打电话给Nokogiri的XML
,并按名字命名。然后通过CSS方法搜索没有问题:
doc = Nokogiri::XML(RestClient.get("https://feeds.feedburner.com/audiodharma"))
doc.css('.regularitem') # => has valid Nokogiri output