Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 清理刮掉的Nokogiri输出_Ruby_Nokogiri_Web Scraping - Fatal编程技术网

Ruby 清理刮掉的Nokogiri输出

Ruby 清理刮掉的Nokogiri输出,ruby,nokogiri,web-scraping,Ruby,Nokogiri,Web Scraping,我正在刮取的内容的输出留给我以下内容: <li><img class="static" src="pic.jpg"><span id="dynamic1" class="the text">I like turtles</span></li> <li><img class="static" src="pic.jpg"><span id="dynamic2" class="the text">I lik

我正在刮取的内容的输出留给我以下内容:

<li><img class="static" src="pic.jpg"><span id="dynamic1" class="the text">I like turtles</span></li>
<li><img class="static" src="pic.jpg"><span id="dynamic2" class="the text">I like bears</span></li>
<li><img class="static" src="pic.jpg"><span id="dynamic3" class="the text">I like ruby</span></li>
<li><img class="static" src="pic.jpg"><span id="dynamic4" class="the text">I like oranges</span></li>
<li><img class="static" src="pic.jpg"><span id="dynamic5" class="the text">I like keyboards</span></li>
<li><img class="static" src="pic.jpg"><span id="dynamic6" class="the text">I like movies</span></li>
<li><img class="static" src="pic.jpg"><span id="dynamic7" class="the text">I like Android</span></li>
<li><img class="static" src="pic.jpg"><span id="dynamic8" class="the text">I like Mac</span></li>
<li><img class="static" src="pic.jpg"><span id="dynamic9" class="the text">I like music</span></li>
<li><img class="static" src="pic.jpg"><span id="dynamic10" class="the text">I like boats</span></li>
  • 我喜欢海龟
  • 我喜欢熊
  • 我喜欢红宝石
  • 我喜欢桔子
  • 我喜欢键盘
  • 我喜欢电影
  • 我喜欢安卓
  • 我喜欢苹果
  • 我喜欢音乐
  • 我喜欢船
  • 这大约有100行,span类每次都不同,“我喜欢海龟”部分每次都不同

    理想情况下,我只想要每一行的“我喜欢海龟”部分。有办法得到这个吗


    示例10行

    如果您最终得到一堆HTML,如下所示:

    <ul>
        <li><img ...><span ...>I want this text</span></li>
        <li><img ...><span ...>I want this text</span></li>
        ...
    </ul>
    

    这将忽略
  • 中的
    元素,并且没有人需要关心它们碰巧有哪些类。

    如果您最终得到一堆类似于以下内容的HTML:

    <ul>
        <li><img ...><span ...>I want this text</span></li>
        <li><img ...><span ...>I want this text</span></li>
        ...
    </ul>
    
    这将忽略
  • 中的
    元素,并且没有人需要关心它们碰巧拥有什么类

    使用
    doc.css()
    遵循答案中的“约定”

    Nokogiri允许您对
    Nokogiri::HTML
    的结果运行XPath,就像它是一个格式良好的XML:

    text_you_want = doc.xpath("//li/span").map(&:text)
    
    p、 我之所以选择了
    /
    而不是根
    /
    ,是因为如果你用
    Nokogiri::HTML
    解析你的刮削剩菜,它会为你把它包装成
    。将XPath作为
    /html/body/li/span写入片段看起来有点笨拙:)

    使用
    doc.css()
    遵循答案中的“约定”

    Nokogiri允许您对
    Nokogiri::HTML
    的结果运行XPath,就像它是一个格式良好的XML:

    text_you_want = doc.xpath("//li/span").map(&:text)
    

    p、 我之所以选择了
    /
    而不是根
    /
    ,是因为如果你用
    Nokogiri::HTML
    解析你的刮削剩菜,它会为你把它包装成
    。将XPath作为
    /html/body/li/span写入片段看起来有点笨拙:)

    有一种方法;如果您发布这100行中的10行可能会有所帮助,因为我们可以确定正确的模式…假设您的
    span
    ,无论
    类别如何,总是遵循
    img
    ,并且是
    li
    的孩子,这是正确的吗?有一种方法;如果您发布这100行中的10行可能会有所帮助,因为我们可以确定正确的模式…假设您的
    span
    ,无论
    类别如何,总是遵循
    img
    ,并且是
    li
    的孩子,这是正确的吗?请您简要解释一下“map(&:text)”的工作原理,或者任何关于它的指示,&:“看起来很有趣,它是如何工作的?它似乎不是一个标准的操作符,看起来像一个魔术。@AmolPujari,google“symbol to proc”。你会发现并学到比我在评论栏中所能说的多得多的东西。@AmolPujari:简言之,
    x.map(&:m)
    x.map{o|o.m}
    的缩写,它很好地消除了块和可变噪声,让你直截了当地说出来。你能解释一下“map(&:text)”是如何简单地工作的,或者任何关于它的指针,&:看起来很有趣,它是如何工作的?它似乎不是一个标准的操作符,看起来像一个魔术。@AmolPujari,google“symbol to proc”。你会发现并学到比我在评论栏中说的多得多的东西。@AmolPujari:简而言之,
    x.map(&:m)
    x.map{| o | o.m}
    的缩写,它很好地消除了块和可变噪声,让你直截了当地说出来。非常感谢。我得仔细阅读地图法。非常感谢。我得仔细阅读地图法。