求用JAVA编写一个网络爬虫的程序

2025-03-05 11:01:43
推荐回答(4个)
回答1:

先根据一个链接,抓取该页面;解析该页面,搜取出该页面中有用的链接,根据链接地址循环抓取就OK了;--简单爬行器原理 抓取完文件后还需要一个功能好点的文档解析器来解析出文件中的内容;--文件解析器 再根据关键字(分词器)处理这些页面,建立自己的搜索引擎;--分词器不好解决 我也正在搞这方面 呵呵

回答2:

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.regex.*;
import javax.swing.*;
import javax.swing.table.*;//一个Web的爬行者(注:爬行在这里的意思与抓取,捕获相同)
public class SearchCrawler extends JFrame{
//最大URL保存值
private static final String[] MAX_URLS={"50","100","500","1000"};

//缓存robot禁止爬行列表
private HashMap disallowListCache=new HashMap();

//搜索GUI控件
private JTextField startTextField;
private JComboBox maxComboBox;
private JCheckBox limitCheckBox;
private JTextField logTextField;
private JTextField searchTextField;
private JCheckBox caseCheckBox;
private JButton searchButton;

//搜索状态GUI控件
private JLabel crawlingLabel2;
private JLabel crawledLabel2;
private JLabel toCrawlLabel2;
private JProgressBar progressBar;
private JLabel matchesLabel2;

//搜索匹配项表格列表
private JTable table;

//标记爬行机器是否正在爬行
private boolean crawling;

//写日志匹配文件的引用
private PrintWriter logFileWriter;

//网络爬行者的构造函数
public SearchCrawler(){
//设置应用程序标题栏
setTitle("搜索爬行者");
//设置窗体大小
setSize(600,600);

//处理窗体关闭事件
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
actionExit();
}
});

//设置文件菜单
JMenuBar menuBar=new JMenuBar();
JMenu fileMenu=new JMenu("文件");
fileMenu.setMnemonic(KeyEvent.VK_F);
JMenuItem fileExitMenuItem=new JMenuItem("退出",KeyEvent.VK_X);
fileExitMenuItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
actionExit();
}
});
fileMenu.add(fileExitMenuItem);
menuBar.add(fileMenu);
setJMenuBar(menuBar);

回答3:

//读取网页上的内容方法---------------------2010.01.25 public String getOneHtml(String htmlurl) throws IOException {
URL url;
String temp;
final StringBuffer sb = new StringBuffer();
try {
url = new URL(htmlurl);
// 读取网页全部内容
final BufferedReader in = new BufferedReader(new InputStreamReader(
url.openStream(),"GBK"));
while ((temp = in.readLine()) != null) {
sb.append(temp);
}
in.close();
} catch (final MalformedURLException me) {
System.out.println("你输入的URL格式有问题!请仔细输入");
me.getMessage();

} catch (final IOException e) {
e.printStackTrace();

}
return sb.toString();
}上面这个方法是根据你传入的url爬取整个网页的内容,然后你写个正则表达式去匹配这个字符串的内容。

回答4:

前几天恰好用c#写了个类似的程序。是用正则表达式做的。如果你需要的话我可以把源代码发给你。