首页 > 解决方案 > 如何使用phantomjs从html源中提取元素?

问题描述

我正在尝试<div>从此 html 中提取一些元素:

<html>
<head> ... </head>
<body>
  <div>
    <div class="app-wrapper">
      <header class="position-sticky top-0 left-0 w-100 z-index-111 mb-20px"> ... </header>
        <div class="app-content">
          <div class="container">
            <div class="rounded mb-10px bg-white">
              <div class="d-flex flex-column flex-m-row p-m-14px">
                ... some html ...
              </div>
            </div>
          </div>
        </div>
    </div>
  </div>
</body>
</html>

使用这个 PhantomJS 代码:

var webPage = require('webpage');
var page = webPage.create();
var link = " "
page.open(link, function (status) {         
        var elems = page.evaluate(function () {
          return [].map.call(document.getElementsByClassName('d-flex flex-column flex-m-row p-m-14px'), function (elem) {
                return elem.innerHTML
            });
        });           
        console.log(elems);     //logs []
        phantom.exit();
 })

由于类中使用的样式,我认为它不会记录任何内容,但是将这个函数用于 app-wrapper 和 app-content 类也没有产生任何结果。它仅适用于容器类并返回一个包含单个元素的数组。为什么它不适用于其他两个班级?

标签: javascripthtmlphantomjs

解决方案


推荐阅读