使用nodejs模块PhantomJS制作爬虫之我们必须要懂的

使用nodejs模块PhantomJS进行页面自动化,因为PhantomJS可以加载和操纵网页,所以执行各种页面自动化任务是完美的。

DOM操作

由于脚本的执行就像在Web浏览器上运行一样,因此标准的DOM脚本CSS选择器可以正常工作。

以下useragent.js示例演示如何读取idtextContent的元素属性qua

运行npm run phantomjs useragent.js,也可以在package.json的scripts项下面增加此条命令,方便在IDE中快速以phantomjs环境启动脚本

上面的示例还显示了自定义远程Web服务器看到User-Agent字符串的方法

使用jQuery和其他库

从1.6版开始,您还可以使用以下方法jQuery包含到页面中page.includeJs

上面的代码片段将打开一个网页,将jQuery库包含到该页面中,然后使用jQuery单击所有按钮。然后它将从网页退出。

确保phantom.exit()page.includeJs包含JavaScript库之前将语句放入,否则可能会过早退出。

网页实例

假设您有一个网页实例:

可以提取并执行什么?

属性

page.canGoForward -> boolean

如果window.history.forward是有效的操作

page.canGoBack -> boolean

如果window.history.back是有效的操作

page.clipRect -> object

可以设置为以下形式的对象:

它指定屏幕截图中将显示屏幕的哪一部分

page.content -> string

整个页面的HTML内容

page.cookies -> object

cookies,它们具有以下形式:

page.customHeaders -> object

TODO

page.event -> object

包含修饰符和键 TODO

page.libraryPath -> string

当前库路径,通常是执行脚本的目录

page.loading -> boolean

是否加载页面

page.loadingProgress -> number

已加载的百分比。100表示页面已加载。

TODO

page.offlineStoragePath -> string

存储sqlite3本地存储和其他离线数据的地方。

page.offlineStorageQuota, ‘number

可以脱机存储的配额(以字节为单位)

page.paperSize -> object

类似于clipRect,但采用真正的纸张大小,如A4。有关深入示例,请查看此示例: printheaderfooter.js.

page.plainText -> string

页面中的纯文本元素

page.scrollPosition -> object

当前滚动位置作为以下表单的对象:

page.settings -> object

当前只有useragent字符串的设置, e.g page.settings.userAgent = 'SpecialAgent';

page.title -> string

页面标题

page.url -> string

页面链接

page.viewportSize -> object

浏览器大小,格式如下:

page.windowName -> string

WM分配的浏览器窗口的名称。

page.zoomFactor -> number

缩放系数。1是正常变焦。

功能

  • page.childFramesCount
  • page.childFramesName
  • page.close
  • page.currentFrameName
  • page.deleteLater
  • page.destroyed
  • page.evaluate
  • page.initialized
  • page.injectJs
  • page.javaScriptAlertSent
  • page.javaScriptConsoleMessageSent
  • page.loadFinished
  • page.loadStarted
  • page.openUrl
  • page.release
  • page.render
  • page.resourceError
  • page.resourceReceived
  • page.resourceRequested
  • page.uploadFile
  • page.sendEvent
  • page.setContent
  • page.switchToChildFrame
  • page.switchToMainFrame
  • page.switchToParentFrame
  • page.addCookie
  • page.deleteCookie
  • page.clearCookies

处理程序/回调

所有页面事件的列表:

  • onInitialized
  • onLoadStarted
  • onLoadFinished
  • onUrlChanged
  • onNavigationRequested
  • onRepaintRequested
  • onResourceRequested
  • onResourceReceived
  • onResourceError
  • onResourceTimeout
  • onAlert
  • onConsoleMessage
  • onClosing

有关更多信息,请查看深度示例: page_event.js.

承接各种网站开发与修改、爬虫、数据采集分析、小程序等任务

Html+Css+JS+PHP+Nodejs+Python

专治网站各种不服

一起探讨,互相学习,共同进步!有事儿您说话。

This entry was posted in NodeJS and tagged , by 织梦先生. Bookmark the permalink.