下载多个站点的PhantomJS在最初几次下载后开始复制同一个站点

下载多个站点的PhantomJS在最初几次下载后开始复制同一个站点,phantomjs,Phantomjs,这段代码继续从1000页的列表中循环下载同一个站点。找不到绕过它的任何方法。我在谷歌上搜索到的可能是split的问题 var fs = require('fs'); var pageContent = fs.read('list.txt'); var arrdata = pageContent.split(/[\n]/); var system = require('system'); var page = require('webpage').create(); var args = syst

这段代码继续从1000页的列表中循环下载同一个站点。找不到绕过它的任何方法。我在谷歌上搜索到的可能是split的问题

var fs = require('fs');
var pageContent = fs.read('list.txt');
var arrdata = pageContent.split(/[\n]/);
var system = require('system');
var page = require('webpage').create();
var args = system.args;
var imagelink;
var content = " ";

function handle_page(i){
    var imageLink = arrdata[i];
    page.open(imageLink, function(){
        fs.write("file"+i+".txt", page.content, 'w');
        handle_page(i+1);
    });
}
handle_page(0);

解决方法是使用批处理文件从文件中获取URL并启动phantomJS脚本。请注意,这可能需要较长的时间,但这是我处理大型列表的唯一方法

批次:

@echo off
for /f "tokens=*" %%a in (C:\PATH\PATH\PATH\PATH\list.txt) do (
  echo %%a
  phantomjs save_script.js %%a
)
pause
PhantomJS保存页面js

var page = require('webpage').create();
var fs = require('fs');
var system = require('system');
var re = system.args[1]

page.open("http://"+re, function(){
  fs.write(re.substr(22,100)+".html", page.content, 'w');
  phantom.exit();
});

我使用substr(22100)将网站URL的最后一部分作为唯一的文件名。由于代码中存在一些复杂的问题,URL在没有http://的情况下存储。

您没有像从中获取此代码那样的停止条件,因此它会一次又一次地“打开”最后一个URL。这是我的猜测。它从哪个页面开始行为不端?它从第四个URL开始行为不端。添加停止条件对结果没有影响。您使用哪个PhantomJS版本?请注册到
OnConsolleMessage
onError
onResourceError
onResourceTimeout
事件()。也许有错误。众所周知,PhantomJS 2.x隐藏了一些错误,因此您也应该尝试PhantomJS 1.9.8。我尝试过使用1.9.6、1.9.7、1.9.8和最新版本。错误是“SSL握手失败”。我通过使用phantomJS脚本使用system.arg获取单个站点来解决我的原始任务,并使一个批处理脚本从文件中键入URL。您是否尝试以以下方式运行该脚本:
phantomJS--ignore SSL errors=true--web security=false script.js