Rails机械化数据碎片查询/清理结果



我从UCAS网站上收集了很多数据(使用mechanize gem),并且大部分数据都能正常工作,但当我试图从苏格兰提取入境要求时,我遇到了一些麻烦。以下是我用来查找和抓取进入要求的代码:

        entry_link = course_details.search('ul.details_tabs a').first
        if entry_link
        # If there is a link to a qualification page for the course go to that
        details_info[:entry] = process_entry(@mechanize.get(entry_link["href"]))
        end 
end

def process_entry(entry_req)
    entry_array = []
    entry_info = {}
        # Sets all data in hash
        @requirements = entry_req.search('li.qual-element.qual_range').text.strip
        entry_info[:req]          = @requirements
        #Pushes to array, and prints     
        entry_array.push(entry_info)
        print_entry_info(entry_info)

然而,这种回报并不是那么好。与其只返回苏格兰高音或高级高音的一个结果,不如同时提取这两个结果并输出:

 BBB Typical offerAABB Typical offer

是否有任何一个区域,只拉BBB或AABB,或者使用gsub或其他东西将其剥离,只显示AABB或BBB?感谢您的帮助。

链接到将从中提取此类数据的示例页面:http://search.ucas.com/course/entryrequirements/448323/anthropology?Vac=2&AvailableIn=2016&IsFeatureProcessed=真&ret=提供者#coursedetailsmenu

问题是:

entry_req.search('li.qual-element.qual_range').text

不要将text与NodeSet一起使用,这是search返回的内容。请参阅NodeSet#text和Node#text的文档。

您需要对找到的节点进行迭代,并从每个节点中提取文本。通常,我们使用返回文本数组的search('some selector').map(&:text)来执行此操作。

最新更新