怎样更快更有效率的抓取网页信息?
我知道肯定会有人说上网上找去,或是说某某软件,用什么什么技术。
如果能在网上找到我就不来这了,要是说用什么软件麻烦把下载地址发下,并略微的描述下应该怎么用。要是说用什么技术的话,那请麻烦详细些了,本人还新手,太深奥不懂。一大堆文字理论性的东西也没心情看,最好是有例子的。
怎样更快更有效率的抓取网页信息?
我知道肯定会有人说上网上找去,或是说某某软件,用什么什么技术。
如果能在网上找到我就不来这了,要是说用什么软件麻烦把下载地址发下,并略微的描述下应该怎么用。要是说用什么技术的话,那请麻烦详细些了,本人还新手,太深奥不懂。一大堆文字理论性的东西也没心情看,最好是有例子的。
// 抓取-(普通网页)
public void zhuaqu(String url, String urlName, String groups,
String zhengze, String t, String w, String strStart, String strEnd,
String bianma) {
try {
date = sdf.format(new java.util.Date());
l_url = new java.net.URL(url);
l_connection = (java.net.HttpURLConnection) l_url.openConnection();
l_connection.connect();
l_urlStream = l_connection.getInputStream();
l_reader = new java.io.BufferedReader(
new java.io.InputStreamReader(l_urlStream, bianma));
i = 0;
iii = 0;
begin = 0;
str = "";
sCurrentLine = "";
while ((sCurrentLine = l_reader.readLine()) != null) {
Pattern p = Pattern.compile(zhengze, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(sCurrentLine);
boolean flag = m.find();
if (flag) {
str = sCurrentLine.replaceAll("'", "\"").replaceAll(
"#ff0000", "").substring(sCurrentLine.indexOf(t),
sCurrentLine.indexOf(w));
if (!strStart.equals("") && !strEnd.equals("")) {
str = strStart + str + strEnd;
} else if (!strStart.equals("")) {
str = strStart + str;
} else if (!strEnd.equals("")) {
str = str + strEnd;
}
iii++;
cjAdd.cjAdd(str, urlName, date, "", groups);
if (iii == 2) {
iii = 0;
break;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
是抓取自己想要的那部分网页内容吗?如果是的话那就用开源工具包htmlparser去抓吧,速度和效率感觉都不错。下载包和帮助文档都在这个网页里面
http://htmlparser.sourceforge.net
这个包主要是通过过滤节点来获得自己想要的内容,如<li><span><a><body>等等,这些节点都可以过滤,也能过滤自定义标签
简单的提示下吧:
Parser parser=new Parser();//获取解析器 parser.setUrl("网页链接");//设置要解析的地址链接 parser.setEncoding(parser.getEncoding());//也可不必写默认的,写上GBK等都行,适合网页编码就OK了 当然,你要过滤节点,首先要指明过滤器,有很多种过滤器,我就以TagNameFilter来说明吧,意思是根据节点名称来过滤。
TagNameFilter tag=new TagNameFilter("span");//过滤<span>
NodeList nodelist=parser.extractAllNodesThatMatch(tag);//获取的是span节点的集合,因为可能有N多个span节点嘛,假设有两个这样的节点,分别为:
<span>你好</span>
<span>好的</span>
现在我要获取第二个节点的内容。
Node node=nodelist.elements(1);//获取第二个span节点
String content=node.getText();//获取第二个节点内容
就点到为止吧,具体你就在网上找点资料吧~ htmparser功能很强大的
右键单击 你 想要的 东西 另存为 就可以了 在不行 可以 用 讯雷 右键点后 有“使用迅雷下载所有连接”
直接保存就可以了啊