当使用Node.js进行web抓取时,我可以运行页面上的所有Java脚本吗?(即,模拟真实的浏览器?)

当使用Node.js进行web抓取时,我可以运行页面上的所有Java脚本吗?(即,模拟真实的浏览器?),node.js,screen-scraping,Node.js,Screen Scraping,我正在尝试使用node.js进行一些web抓取。使用jsdom,很容易加载DOM并将JavaScript注入其中。我想更进一步:运行网页中链接到的所有JavaScript,然后检查生成的DOM,包括元素的视觉属性(高度、宽度等) 到目前为止,当我尝试用jsdom检查DOM元素的维度时,我得到了NaN 这可能吗 我感到有两个截然不同的挑战: 运行网页上的所有JS 除了DOM之外,让节点模拟窗口/屏幕渲染 问这个问题的另一种方式是:是否可以将node.js用作完全无头的浏览器,您可以编写脚本 如果这

我正在尝试使用node.js进行一些web抓取。使用
jsdom
,很容易加载DOM并将JavaScript注入其中。我想更进一步:运行网页中链接到的所有JavaScript,然后检查生成的DOM,包括元素的视觉属性(高度、宽度等)

到目前为止,当我尝试用jsdom检查DOM元素的维度时,我得到了
NaN

这可能吗

我感到有两个截然不同的挑战:

  • 运行网页上的所有JS
  • 除了DOM之外,让节点模拟窗口/屏幕渲染
  • 问这个问题的另一种方式是:是否可以将node.js用作完全无头的浏览器,您可以编写脚本

    如果这是不可能的,有人对我可以使用什么库来实现这一点有什么建议吗?我比较不懂语言。

    您可以使用:

    • htmlunit(java,jython)
    • PyQtWebKit或pygtk+webkit(python)
    • WWW::Mechanize::Firefox从Firefox中删除(perl)
    • Win32 IEAutomation从MS internet explorer(perl)中刮取
    所有这些解决方案都可以运行javascript


    您将在搜索中找到许多示例代码

    看看PhantomJS。使用起来非常简单

    PhantomJS是一个打包和嵌入WebKit的命令行工具。从字面上看,它的行为与任何其他基于WebKit的web浏览器类似,只是没有任何内容显示在屏幕上(因此,术语headless)。除此之外,PhantomJS还可以使用其JavaScript API进行控制或编写脚本


    我不知道node.js,但你可以看看htmlunit或selenium+headless gem