代码之家  ›  专栏  ›  技术社区  ›  junkone

类名中的空格迫使表不可选择

  •  -1
  • junkone  · 技术社区  · 1 年前

    在抓取外汇工厂日历时 <table class="calendar__table "> 所以野村找不到桌子。

    Nokogiri::CSS::SyntaxError (unexpected '$' after '  ')
    
    require "nokogiri"
    require "csv"
    require "open-uri"
    url1="https://www.forexfactory.com/calendar?day=Jan5.2023"
    html = URI.open(url1)
    doc = Nokogiri::HTML(html)
    table = doc.at('calendar__table  ')
    

    该表存在于该html中,如此屏幕截图所示。那我该怎么刮这张桌子呢? enter image description here

    1 回复  |  直到 1 年前
        1
  •  1
  •   Silvio Mayolo    1 年前

    Node#at 采用CSS选择器或XPath字符串。由于您正在尝试匹配CSS类,因此应该使用 CSS selector .

    table = doc.at('.calendar__table')
    

    为了完整起见,您也可以使用XPath来完成,但您必须告诉XPath中的空格 class 在这种情况下,因为它将文档视为原始XML,而不是带有CSS类的HTML。

    table = doc.at('//*[@class="calendar__table  "]')