【问题标题】:Seeking a selector for child elements in dom scrape在 dom scrape 中寻找子元素的选择器
【发布时间】:2015-08-02 14:40:29
【问题描述】:

我无法更改相关网站上的任何 html。

这是一些html:

<ul id="utility-menu" class="menu menu--primary">

        <li><a class="" href="https://www.example.com/newsstand" target="_blank">Magazines</a></li>

        <li><a class="" href="https://secure.bla.com/example/promo/GiveAGift/" target="_blank">Gifts</a></li>

        <li>

          <a href="/email_check?lang=fr">Français</a>
        </li>

            <li><a class="" href="/signin">Sign In</a></li>

        <li>
          <div class="i-am-canadian">
            <img alt="Canadian flag" height="23px;" src="https://secure.example.com/assets/images/icons/ui/i-canadian-c8a132ad64588dcc0b2e61cc589dfef3.png" width="40px;">
          </div>
        </li>
      </ul>

我设法使用以下方法选择菜单:

document.querySelectorAll('.menu--primary')[0]

我感兴趣的元素是:

<a href="/email_check?lang=fr">Français</a>

此元素是网站访问者的语言选择,可以是“英语”或“法语”。

如果用户在英语页面上,则元素的值将是显示的值。但如果它们是法语等价物,则元素将为&lt;a href="/email_check?lang=en"&gt;English&lt;/a&gt;

我想要一个返回“English”或“Français”的选择器。

我该怎么做?

【问题讨论】:

    标签: javascript selector


    【解决方案1】:

    答案:

    var el = document.querySelector('#utility-menu a[href^="/email_check?lang="').textContent;
    

    它将选择#utility-menu 中以/email_check?lang= 开头的属性为href 的第一个a 元素。或许您可以通过.trim() 文本来消除空格。

    【讨论】:

    【解决方案2】:

    如果你的 html 不会有太大变化,你可以使用

    var test = document.querySelector("ul > li > a[href='/email_check?lang=fr']");
    
    console.log(test.textContent); // Français
    

    https://jsfiddle.net/u4vjq8ah/

    【讨论】:

    • .innerText 不符合标准,您应该改用textContent
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 2019-02-27
    • 1970-01-01
    • 2017-09-22
    相关资源
    最近更新 更多