- 4
- 0
- 约7.45千字
- 约 7页
- 2016-11-25 发布于浙江
- 举报
以下是一个Java爬虫程序
以下是一个Java爬虫程序,它能从指定主页开始,按照指定的深度抓取该站点域名下的网页并维护简单索引。
参数:private static int webDepth = 2;//爬虫深度。主页的深度为1,设置深度后超过该深度的网页不会抓取。
private int intThreadNum = 10;//线程数。开启的线程数。
抓取时也会在程序源文件目录下生成一个report.txt文件记录爬虫的运行情况,并在抓取结束后生成一个fileindex.txt文件维护网页文件索引。
本程序用到了多线程(静态变量和同步),泛型,文件操作,URL类和连接,Hashtable类关联数组,正则表达式及其相关类。运行时需使用命令行参数,第一个参数应使用http://开头的有效URL字符串作为爬虫的主页,第二个参数(可选)应输入可转换为int型的字符串(用Integer.parseInt(String s)静态方法可以转换的字符串,如3)作为爬虫深度,如果没有,则默认深度为2。
本程序的不足之处是:只考虑了href= href= href=后加绝对url的这三种情况(由于url地址在网页源文件中情况比较复杂,有时处理也会出现错误),还有相对url和window.open(的情况没有考虑。异常处理程序也只是简单处理。如果读者有改进办法可以把源代码帖出,不胜感激。
附上源代码如下(保存名为GetWeb.java):
import java.io.File;import java.io.BufferedReader;import java.io.FileOutputStream;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import .URL;import .URLConnection;import java.util.ArrayList;import java.util.regex.Matcher;import java.util.regex.Pattern;import java.util.Hashtable;
public class GetWeb {private int webDepth = 2;//爬虫深度private int intThreadNum = 10;//线程数private String strHomePage = ;//主页地址private String myDomain;//域名private String fPath = web;//储存网页文件的目录名private ArrayListString arrUrls = new ArrayListString();//存储未处理URLprivate ArrayListString arrUrl = new ArrayListString();//存储所有URL供建立索引private HashtableString,Integer allUrls = new HashtableString,Integer();//存储所有URL的网页号private HashtableString,Integer deepUrls = new HashtableString,Integer();//存储所有URL深度private int intWebIndex = 0;//网页对应文件下标,从0开始private String charset = GB2312;private String report = ;private long startTime;private int webSuccessed = 0;private int webFailed = 0;public GetWeb(String s){this.strHomePage = s;}public GetWeb(String s,int i){this.strHomePage = s;this.webDepth = i;}public synchronized void addWebSuccessed(){webSuccessed++;}public synchronized void addWebFailed(){webFailed++;}public synchronized void addReport(String s){try{report += s;PrintWriter pwReport = new
您可能关注的文档
最近下载
- 2025年陕西省中考数学真题试卷含答案.pdf VIP
- 一年级英语寒假作业.pdf VIP
- 微生物技术 走进微生物世界 微生物技术—走进微生物世界.pptx VIP
- 《植物组织培养》课程教学大纲(本科).pdf VIP
- 2025年重庆市公务员省考《行测》联考真题(含答案).pdf VIP
- 2026年一年级英语【寒假作业】.docx VIP
- 抽象函数的单调性.doc VIP
- 2025年重庆市公务员考试行测真题及答案详解(最新).docx VIP
- 2025年特许金融分析师私募股权投资中的公司尽职调查专题试卷及解析.pdf VIP
- 2025年金融风险管理师久期与债券流动性风险的交互影响专题试卷及解析.pdf VIP
原创力文档

文档评论(0)