如何检测网站是否允许您上传文件?

rud*_*vic 9 javascript selenium file-upload web-crawler web-scraping

我想知道某个网站是否允许您上传文件。我可以想到网站执行此操作的两种主要方式,理想情况下我希望能够检测到这两种方式:

  • 按钮
  • 拖放

PhantomJS 文档有以下示例片段:

var webPage = require('webpage');
var page = webPage.create();

page.uploadFile('input[name=image]', '/path/to/some/photo.jpg');
Run Code Online (Sandbox Code Playgroud)

但不清楚我如何弄清楚它input[name=image]实际上支持上传。

目前,我的爬虫正在跟踪网站上的所有链接和按钮,但我不确定如何检测“文件上传弹出窗口已打开”。D&D 的案例对我来说更不清楚。我需要一个针对单个页面的解决方案,显然我可以将其应用到我通过的每个页面。

更新事实 证明,大多数情况下这都可以解决问题:

document.querySelector('input[type=file]').click()
Run Code Online (Sandbox Code Playgroud)

然而,D&D 区域并不总是可点击的,并且您不能总是假设它[ondrop]会存在。有时,删除侦听器会在代码中添加:

object.addEventListener("drop", myScript);
Run Code Online (Sandbox Code Playgroud)

那么我该如何检查这些元素的存在呢?

nim*_*ari 0

您可以检查表单是否具有enctype="multipart/form-data"。或者在 html 页面中搜索type=file的输入。