import org.jsoup.Jsoup;
import javax.swing.*;
import org.jsoup.helper.Validate;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Scanner;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
@SuppressWarnings("unused")
public class SimpleWebCrawler extends JFrame {
JTextField yourInputField = new JTextField(20);
static JTextArea _resultArea = new JTextArea(100, 100);
JScrollPane scrollingArea = new JScrollPane(_resultArea);
private final static String newline = "\n";
public SimpleWebCrawler() throws MalformedURLException {
String word2 = yourInputField.getText();
_resultArea.setEditable(false);
try {
URL my_url = new URL("http://" + word2 + "/");
BufferedReader br = new BufferedReader(new InputStreamReader(
my_url.openStream()));
String strTemp = "";
while (null != (strTemp = br.readLine())) {
_resultArea.append(strTemp + newline);
}
} catch (Exception ex) {
ex.printStackTrace();
}
_resultArea.append("\n");
_resultArea.append("\n");
_resultArea.append("\n");
String url = "http://" + word2 + "/";
print("Fetching %s...", url);
try{
Document doc = Jsoup.connect(url).get();
Elements links = doc.select("a[href]");
System.out.println("\n");
BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\user\\fypworkspace\\FYP\\Link\\abc.txt"));
_resultArea.append("\n");
for (Element link : links) {
print(" %s ", link.attr("abs:href"), trim(link.text(), 35));
bw.write(link.attr("abs:href"));
bw.write(System.getProperty("line.separator"));
}
bw.flush();
bw.close();
} catch (IOException e1) {
}
JPanel content = new JPanel();
content.setLayout(new BorderLayout());
content.add(scrollingArea, BorderLayout.CENTER);
content.add(yourInputField);
this.setContentPane(content);
this.setTitle("Crawled Links");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
}
private static void print(String msg, Object... args) {
_resultArea.append(String.format(msg, args) +newline);
}
private static String trim(String s, int width) {
if (s.length() > width)
return s.substring(0, width - 1) + ".";
else
return s;
}
//.. Get the content pane, set layout, add to center
public static void main(String[] args) throws IOException {
JFrame win = new SimpleWebCrawler();
win.setVisible(true);
}
}
안녕하세요, 이것은 웹 주소에서 링크를 추출하는 코드입니다. 사용자가 원하는 URL을 입력하면이 코드는 URL에서 링크를 추출합니다.잘못된 인수 예외가 발생했습니다.
이 코드는 사용자가 ECLIPSE IDE 콘솔에서 URL을 입력하도록 요청합니다. 입력을 키 입력하면 코드는 URL에서 링크를 추출하여 출력을 JTextArea로 전송합니다.
내가 지금하고 싶은 것은 콘솔의 입력에 사용자 키가 아닌 사용자 입력을받는 Jtextfield를 생성하고 싶습니다.
문자열 입력을 처리하기위한 책임이 코드 줄은 다음과 같습니다
URL my_url = new URL("http://" + word2 + "/");
String url = "http://" + word2 + "/";
그러나 나는 무엇을 놓치고 않는
protocol = http host = null.
설명하는 불법 인수 예외를 받고?
안녕하세요, 내 코드 모양에서 jtextfield를 올바르게 만드시겠습니까? 내가 입력을 입력하고 코드를 실행하려면 사용자에게 묻는 jtextfield가 필요합니다. – jasper
먼저 JTextField를 만든 다음 표시하고 사용자가 텍스트를 입력하도록 한 다음 해당 텍스트가있는 웹 크롤러를 실행해야합니다. 현재 사용자가 텍스트를 입력 할 수 있기 전에 웹 크롤러를 실행하고 있습니다. – Gnat
SimpleWebCrawler 클래스 외부에서 텍스트 필드를 만들어야한다는 의미입니까? – jasper