如何让Nokogiri在Ruby中从span中抓取文本



我正试图从一个使用Nokogiri和Curb的网站上抓取信息,但我似乎找不到正确的名称/找到在哪里抓取。我正在尝试抓取API密钥,它位于HTML代码的底部为"xxxxxxx"。

HTML代码为:

    <body class="html not-front logged-in no-sidebars page-app page-app- page-app-8383900 page-app-keys i18n-en" data-twttr-rendered="true">
    <div id="skip-link"></div>
    <div id="page-wrapper">
        <!--
         Code for the global nav 
        -->
        <nav id="globalnav" class="without-subnav"></nav>
        <nav id="subnav"></nav>
        <section id="hero" class="hero-short"></section>
<section id="gaz-content">
    <div class="container">
        ::before
        <div id="messages"></div>
        <div id="gaz-content-wrap-outer" class="row">
            ::before
            <div id="gaz-content-wrap-inner" class="span12">
                <div class="row">
                    ::before
                    <div class="article-wrap span12">
                        <article id="gaz-content-body" class="content">
                            <header></header>
                            <div class="header-action"></div>
                            <div class="tabs"></div>
lass="d-block d-block-system g-main">
    <div class="app-details">
        <h2>
            Application Settings
        </h2>
        <div class="description"></div>
        <div class="app-settings">
            <div class="row">
                ::before
                <span class="heading">
                    Consumer Key (API Key)
                </span>
                <span>
                    xxxxxxxxx
                </span>

我似乎只能看到"content"文本。

我的代码如下:

consumer = html.at("#gaz-content-body")['class']
puts consumer

我不确定该输入什么来选择类和/或span然后输入文本。我只能得到Nokogiri输入"content"

在这种情况下,我们需要找到span class="heading"之后的第二个span,以及div class="app-settings"内部-我有点一般,但不是太多。我使用search而不是at来检索两个跨度并获得第二个:

# Gets the 2 span elements under <div class='app-settings'>.
res = html.search('#gaz-content-body .app-settings span')
# Use .text to get the contents of the 2nd element.
res[1].text.strip
# => "xxxxxxxx"

但是您也可以使用at来瞄准相同的目标:

res = html.at("#gaz-content-body .app-settings span:nth-child(2)")
res.text.strip
# => "xxxxxxxx"

相关内容

  • 没有找到相关文章

最新更新