javascript - 使用 phantomJS 运行源的 javascript

标签 javascript phantomjs web-crawler

我想要执行以下操作:

  1. 访问网站
  2. 点击按钮 => JavaScript 函数将更改 html 的部分内容
  3. 获取新更改的html的一些内容

所有这些都是自动的

我尝试了为nodejs提供的几种工具,包括 node-cralwerPhantomJS

目前,我在 PhantomJS 中运行此代码

page.open('https://www.thegioididong.com/dtdd/iphone-x-256gb', function (status) {
    console.log("Status: " + status);

    var a = page.evaluate(function () {

        document.getElementsByClassName("viewparameterfull")[0].click()

        console.log(document.getElementsByClassName('parameterfull')[0].textContent)
        return document.getElementsByClassName('parameterfull')[0].textContent
    })
    phantom.exit();
})

输出是

Status: success
ReferenceError: Can't find variable: getFullSpec

使用 Chrome 调试器,我可以看到 getFullSpec 是一个函数:

  • 单击代码中选定的按钮时触发

  • 可以在页面加载时下载的另一个 js 文件中找到。

我的问题是:

  • PhantomJS打开使用page.open()的链接时,它会加载每个文件(js、css.. .) 就像浏览器一样?

  • 如果是这样,我如何使用 PhantomJS 来运行该 getFullSpec (它包含在另一个 js 文件中)?

最佳答案

  1. 是的。
  2. eveluate方法中的js会在页面中执行, 并且 onclick 监听器中存在错误。

您可以打开一个页面,打开devtools,在js源中搜索代码。

关于javascript - 使用 phantomJS 运行源的 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49479976/

相关文章:

php - 如何在 PHP 或 Javascript 中设置技术测验的超时时间

javascript - 我的测试中存在错误或对 DalekJS/PhantomJS 调试支持的建议?

python - 将文本文件写入管道

javascript - casperJS 没有登录到控制台

javascript - 使用 casper 检查元素文本

ip - 爬虫/蜘蛛IP地址的良好来源

python - Scrapy + Python,从网站查找链接时出错

javascript - react 原生 : change view corresponding to scroll position

javascript - 位置 "/"的匹配叶路由没有元素

javascript - 在变量内执行循环