下面是我的代码:
doc = Nokogiri::HTML(open("https://feeds.feedburner.com/audiodharma"))
talks = doc.css(".regularitem")css看起来很简单,所以我不明白为什么我总是得到一个空数组用于‘talk’。如果你看到不是我的东西,请告诉我-- Nokogiri初学者在这里。谢谢。
发布于 2017-09-17 22:47:02
如果您尝试使用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不知道如何正确地处理它-它是一个具有一些浏览器样式属性的。它通常读起来很好,但我不确定规格是否更深入。
我找到的一种解决方案是使用RestClient加载URL,一旦加载了内容,它就会被正确解析。另外,你应该调用诺基里的XML,并根据它的名字来调用它。那么search by CSS方法就可以正常工作了:
doc = Nokogiri::XML(RestClient.get("https://feeds.feedburner.com/audiodharma"))
doc.css('.regularitem') # => has valid Nokogiri outputhttps://stackoverflow.com/questions/46264355
复制相似问题