代码之家  ›  专栏  ›  技术社区  ›  Boss Nass

Ruby on Rails中的DOMDocument

  •  0
  • Boss Nass  · 技术社区  · 9 年前

    只是想知道是否可以将这个php脚本转换为rails

    $c = file_get_contents('http://www.bunnings.com.au/products_category_plumbing-supplies_1637.aspx'); 
    $dom = new DOMDocument();
    $dom->loadHTML($c);    
    $xpath = new DOMXPath($dom);
    $div = $xpath->query('//div[@class="details"]');
    
    echo '<table>';
    
    foreach($div as $details)
    {
        $name = $details->getElementsByTagName('h4')->item(0)->getElementsByTagName('a')->item(0)->nodeValue;
        $price = $details->getElementsByTagName('p')->item(0)->getElementsByTagName('span')->item(0)->nodeValue;
        $itemNumber = $details->getElementsByTagName('p')->item(0)->childNodes->item(2)->nodeValue;
    
        $html = '<tr>';
        $html .= '<td>' . htmlspecialchars($name) . '</td>';
        $html .= '<td>' . htmlspecialchars($price) . '</td>';
        $html .= '<td>' . htmlspecialchars($itemNumber) . '</td>';
        $html .= '</tr>';
    
        echo $html;
    }
    
    echo '</table>';
    
    1 回复  |  直到 9 年前
        1
  •  1
  •   Francesco Boffa    9 年前

    Rails是一个用于web应用程序的Ruby框架。您需要的是一个简单的Ruby脚本(当然,您可以将其集成到更大的Rails应用程序中)。

    您可以使用nokogiri gem解析HTML。在您的终端上:

    gem install nokogiri
    

    然后创建一个新的.rb文件,如下所示:

    require 'open-uri'
    require 'nokogiri'
    
    url = 'http://www.bunnings.com.au/products_category_plumbing-supplies_1637.aspx'
    doc = Nokogiri::HTML(open(url))
    
    div = doc.xpath('//div[@class="details"]')
    
    # Well, I guess you should continue now
    

    看见 http://www.nokogiri.org/tutorials/searching_a_xml_html_document.html 对于一些Nokogiri示例。