java - 如何在我的个人电脑上复制此问题?

标签 java csv proxy

我尝试将此代码复制到我的计算机上(来自这篇文章:Date Format getting disturb when creating .CSV file in Java)

package com.mufapscraping;

 //import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
//import java.util.Collections;
import java.util.Iterator;
//import java.util.List;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class ComMufapScraping {

boolean writeCSVToConsole = true;
boolean writeCSVToFile = true;
//String destinationCSVFile = "C:\\convertedCSV.csv";
boolean sortTheList = true;
boolean writeToConsole;
boolean writeToFile;
public static Document doc = null;
public static Elements tbodyElements = null;
public static Elements elements = null;
public static Elements tdElements = null;
public static Elements trElement2 = null;
public static String Dcomma = ", 2";
public static ArrayList<Elements> sampleList = new ArrayList<Elements>();

public static void createConnection() throws IOException {
    System.setProperty("http.proxyHost", "191.1.1.123");
    System.setProperty("http.proxyPort", "8080");
    String tempUrl = "http://www.mufap.com.pk/nav_returns_performance.php?tab=01";
    doc = Jsoup.connect(tempUrl).get();
}

public static void parsingHTML() throws Exception {
    for (int i = 1; i <= 1; i++) {

        tbodyElements = doc.getElementsByTag("tbody");
        //Element table = doc.getElementById("dataTable");

        if (tbodyElements.isEmpty()) {
            throw new Exception("Table is not found");
        }
        elements = tbodyElements.get(0).getElementsByTag("tr");

        for (Element trElement : elements) {
            trElement2 = trElement.getElementsByTag("tr");
            tdElements = trElement.getElementsByTag("td");
            FileWriter sb = new FileWriter("C:\\convertedCSV2.csv", true);
            for (Iterator<Element> it = tdElements.iterator(); it.hasNext();) {
                if (it.hasNext()) {
                    sb.append("  \n  ");
                }
                for (Iterator<Element> it2 = trElement2.iterator(); it.hasNext();) {
                    Element tdElement = it.next();
                    sb.append(tdElement.text());
                    if (it2.hasNext()) {
                        sb.append("   ,   ");
                    }

                }

                System.out.println(sb.toString());
                sb.flush();
                sb.close();
            }

            System.out.println(sampleList.add(tdElements));
            /* for (Elements elements2 : zakazky) {
            System.out.println(elements2);
        }*/

        }
    }
}

但是,我无法让代码在 Eclipse 中运行。当我尝试运行它时,出现如下所示的异常错误:

Exception in thread "main" java.net.SocketTimeoutException: connect timed out
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:211)
at sun.net.www.http.HttpClient.New(HttpClient.java:308)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1004)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:952)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:851)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:563)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:540)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:227)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:216)
at exportDataFromWebsite.createConnection(exportDataFromWebsite.java:34)
at exportDataFromWebsite.main(exportDataFromWebsite.java:83)

我已完成以下操作:

  • 下载jsoup jar文件并将其添加到项目路径

  • 以与代码中相同的方式命名我的类和 csv 文件

我很确定问题出在这些行中:System.setProperty("http.proxyHost", "191.1.1.123"); System.setProperty("http.proxyPort", "8080"); 字符串 tempUrl = "http://www.mufap.com.pk/nav_returns_performance.php?tab=01"; doc = Jsoup.connect(tempUrl).get();

但我不知道如何更改它以使其在我自己的电脑上运行。我如何知道我的电脑使用什么代理?如有任何帮助,我们将不胜感激!

顺便说一句...我不是为了自己的利益而复制某人的代码,我正在尝试在我自己的机器上复制问题并提出一个有用的解决方案 - 但当我尝试运行它时出现错误。谢谢

另外,还有一个问题,当我取消注释 //String destinationCSVFile = "C:\\convertedCSV.csv"; 时,我收到一条错误消息,提示“无效的转义序列”...这是为什么?我认为它是一个字符串,因此允许使用双引号?

最佳答案

您可能没有使用代理?然后删除行:

    System.setProperty("http.proxyHost", "191.1.1.123");
    System.setProperty("http.proxyPort", "8080");

否则,如果您使用代理(可能需要身份验证),您可以尝试:

private static void setGlobalProxy(String proxyHost, int proxyPort, String authUser, String authPassword) {
    if (proxyHost != null && !proxyHost.isEmpty())
        System.setProperty("http.proxyHost", proxyHost);
    if (proxyPort > 0)
        System.setProperty("http.proxyPort", ""+proxyPort);

    if (authUser != null && authPassword != null) {
        Authenticator.setDefault(new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(authUser, authPassword.toCharArray());
            }
        });

        System.setProperty("http.proxyUser", authUser);
        System.setProperty("http.proxyPassword", authPassword);
    }
}

关于java - 如何在我的个人电脑上复制此问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36694003/

相关文章:

java - Azure Functions - 如何使用默认 `MultipartHttpServletRequest` 方法中的 `run()` 类?

javascript - 使用 JQuery 通过 Ajax 请求时未下载文件

python - 在 Python 中使用 Selenium 访问 Tor

git - 让 Git 与代理服务器一起工作 - 失败并显示 "Request timed out"

node.js - 无法在公司代理后面运行 dalekjs 测试脚本

java:如何才能看到 JScrollPane 的后面?

java - Android:启动前台不会正确显示通知

java - 如何从菜单处理程序重新实例化零件类?

r - 如何将多个数据框导出到 CSV?

python - Python 脚本可以读/写的(CSV)文件大小是否有限制?