如何修复HTMLunit不产生网页抓取?

时间:2019-02-12 04:09:02

标签: java node.js reactjs screen-scraping htmlunit

当前,当使用htmlunit的Web抓取工具时,我希望通过Java抓取并访问正在构建的小型网站来生成单元测试。可以在此处找到website的代码!

我还将放置正在使用的Java代码,目前,我知道必须等待时间,并且可以禁用针对以下情况弹出的错误消息:

  

二月。 2019年11月11日10:50:10 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:'https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css'[6:10]样式规则错误。 (无效的令牌“-”。应为以下其中之一:,,,“}”,“;”,“ *”。)   2019年2月11日晚上10:50:10 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler警告   警告:CSS警告:'https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css'[6:10]忽略此规则中的以下声明。   2019年2月11日晚上10:50:11 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:'https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css'[6:22403]表达式错误。 (无效的令牌“”。应为以下其中之一:,“”,,,,,,,,,,,,,,,,,,,,,,,,“ progid:”。)   2019年2月11日晚上10:50:11 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:'https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css'[6:23772]表达式错误。 (无效的令牌“”。应为以下其中之一:,“”,,,,,,,,,,,,,,,,,,,,,,,,“ progid:”。)   2019年2月11日晚上10:50:11 com.gargoylesoftware.htmlunit.DefaultCssErrorHandler错误   警告:CSS错误:'https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css'[6:24174]表达式错误。 (无效的令牌“”。应为以下其中之一:,“”,,,,,,,,,,,,,,,,,,,,,,,,“ progid:”。)   警告:CSS错误:'https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css'[6:101786]表达式错误。 (无效的令牌“”。应为以下其中之一:,“”,,,,,,,,,,,,,,,,,,,,,,,,“ progid:”。)   2019年2月11日晚上10:50:11 com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl通知   警告:遇到过时的内容类型:“文本/ javascript”。

问题是这些情况发生后再也不会创建文本,我也不知道为什么或如何解决此问题,并且无法在线找到它。使用htmlUnit 2.31,我正在使用的网站是React,HTML,bootstrap CSS,这是我的Java代码,注释了几行,但是无论如何它仍然永远不会得到任何文本。

我的目标是能够加载我的网站并刮除最终文件中产生的html,css和javascript,并能够在文件中查看它。这在其他网站上也可以正常使用,我可以获取错误消息

我已经在StackOverflow上尝试了不同的问题,尝试了htmlunit的网站,他们的文档以及注释掉了显示错误的行,但是这些都没有真正解决为什么根本不显示任何文本的问题。当前运行带有NodeJS的Windows 7 64bit,用于在端口3000上加载我的反应。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.FileOutputStream;

import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.BrowserVersion;

public class Scraper
{
    private String outputLocation, websiteLocation;
    private File output;

    public Scraper()
    {
        outputLocation = "C:/Users/MonPC/Desktop/School/SOEN/SOEN 341 Software Process'/Project/cssd/testing/Result.html";
        websiteLocation = "http://localhost:3000/";
        output = new File(outputLocation);
    }

    public Scraper(String websiteLocation, String outputLocation)
    {
        this.outputLocation = outputLocation;
        this.websiteLocation = websiteLocation;
        output = new File(outputLocation);
    }

    public boolean scrap()
    {
        PrintWriter filewriter = null;
        boolean success = false;
        WebClient client = new WebClient(BrowserVersion.CHROME);

        try
        {
            filewriter = new PrintWriter(new FileOutputStream(output));
            // turn off htmlunit warnings
                //java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(java.util.logging.Level.OFF);
              //java.util.logging.Logger.getLogger("org.apache.http").setLevel(java.util.logging.Level.OFF);

            //client.getOptions().setJavaScriptEnabled(true);
            //client.getOptions().setCssEnabled(true);
            //client.getOptions().setUseInsecureSSL(true);
            //client.waitForBackgroundJavaScript(100 * 1000);
            HtmlPage page = client.getPage(websiteLocation);
            filewriter.println(page.asXml());
            System.out.println(page.asXml());
            success = true;
        }
        catch (FileNotFoundException fnf)
        {
            System.out.println("File was moved or deleted during the write process");
        }
        catch (IOException ioe)
        {
            System.out.println("Couldn't connect to the website or had issues opening up default browser");
            ioe.printStackTrace();
        }
        finally
        {
            if (filewriter != null)
                filewriter.close();
            return success;
        }
    }

    public String getOutputLocation()
    {
        return outputLocation;
    }

    public String getWebsiteLocation()
    {
        return websiteLocation;
    }

    public File getOutput()
    {
        return output;
    }
}

0 个答案:

没有答案