用htmlparser做 java抓取网页指定内容。。

Seven_Tee 2012-01-03 04:00:09
我想做一个java 网页指定内容的抓取。。。
不知道怎么做,请大家帮我一下,别太复杂了。。。
先,谢谢 各位了。。麻烦你们了,这事拖了2天了,有点急。。。
...全文
564 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
Seven_Tee 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 ollim 的回复:]
回帖的基本都是 没做过 抓去一般简单的 用 正则过滤
复杂点的 用htmlparser

实际应用自己 写解析器
你取标题 用 htmlparser HTMLEditorKit.ParserCallback
public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos)
这个是 开头标签
用 if(t.……
[/Quote]
不懂我得问啊。。研究得入门了才能研究啊,我现在都是稀里糊涂的。。
ollim 2012-01-04
  • 打赏
  • 举报
回复
回帖的基本都是 没做过 抓去一般简单的 用 正则过滤
复杂点的 用htmlparser

实际应用自己 写解析器
你取标题 用 htmlparser HTMLEditorKit.ParserCallback
public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos)
这个是 开头标签
用 if(t.equals(HTML.Tag.TITLE)) 来取比较好 这个要网站支持 比如csdn 你抬头看左上角
他html title 里面写了 才行 没有的 可用 pos定位 或者 左右标签定位

其他的你自己研究 也别问了
LSP学逆向 2012-01-04
  • 打赏
  • 举报
回复
用jsoup 百度一下,找找相关的API,很容易上手的。
Seven_Tee 2012-01-04
  • 打赏
  • 举报
回复
有人能具体说说嘛?
您花上几十分钟的事情,我可能要花几十个小时。。。麻烦各位了~帮帮小弟吧
Seven_Tee 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yuerzm 的回复:]
看下API啊。
用个 Filter 过滤 title
[/Quote]
我不知道怎么做,新手一个。。
Seven_Tee 2012-01-04
  • 打赏
  • 举报
回复
有人么~!
bin_yy 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 seven_tee 的回复:]
引用 19 楼 dyb198775 的回复:
引用 18 楼 seven_tee 的回复:
引用 17 楼 dyb198775 的回复:
引用 16 楼 seven_tee 的回复:
怎么没人。。

给你写下代码。

Java code

public static void main(String[] args) {
String htmlcode = ReadUrl.ge……
[/Quote]
package com.dyb.url;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import org.htmlparser.Parser;
import org.htmlparser.beans.StringBean;
import org.htmlparser.util.ParserException;
import org.htmlparser.visitors.HtmlPage;



public class ReadUrl {
public static String getHtml(String urlString) {
try {
StringBuffer html = new StringBuffer();
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStreamReader isr = new InputStreamReader(conn.getInputStream());
BufferedReader br = new BufferedReader(isr);
String temp;
while ((temp = br.readLine()) != null) {
html.append(temp).append("\n");
}
br.close();
isr.close();
return html.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

public static void main(String[] args) {
String htmlcode = ReadUrl.getHtml("http://tieba.baidu.com/p/1347940189");
Parser parser = Parser.createParser(htmlcode, "GBK");
HtmlPage page = new HtmlPage(parser);
try
{
parser.visitAllNodesWith(page);
}
catch (ParserException e1)
{
e1 = null;
}
// 显示标题
System.out.println(page.getTitle());
// 显示文本
System.out.println(getContent());
}

private static String getContent() {
StringBean sBean = new StringBean();
sBean.setLinks(true);
sBean.setCollapse(true);
sBean.setReplaceNonBreakingSpaces(true);
sBean.setURL("http://tieba.baidu.com/p/1347940189");
// System.out.println("This content is:"+sBean.getStrings());
return sBean.getStrings();
}
}
bin_yy 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 seven_tee 的回复:]
引用 17 楼 dyb198775 的回复:
引用 16 楼 seven_tee 的回复:
怎么没人。。

给你写下代码。

Java code

public static void main(String[] args) {
String htmlcode = ReadUrl.getHtml("http://tieba.baidu.com/p/1347940189");
P……
[/Quote]
package com.dyb.url;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import org.htmlparser.Parser;
import org.htmlparser.beans.StringBean;
import org.htmlparser.util.ParserException;
import org.htmlparser.visitors.HtmlPage;



public class ReadUrl {
public static String getHtml(String urlString) {
try {
StringBuffer html = new StringBuffer();
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStreamReader isr = new InputStreamReader(conn.getInputStream());
BufferedReader br = new BufferedReader(isr);
String temp;
while ((temp = br.readLine()) != null) {
html.append(temp).append("\n");
}
br.close();
isr.close();
return html.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

public static void main(String[] args) {
String htmlcode = ReadUrl.getHtml("http://tieba.baidu.com/p/1347940189");
Parser parser = Parser.createParser(htmlcode, "GBK");
HtmlPage page = new HtmlPage(parser);
try
{
parser.visitAllNodesWith(page);
}
catch (ParserException e1)
{
e1 = null;
}
// 显示标题
System.out.println(page.getTitle());
// 显示文本
System.out.println(getContent());
}

private static String getContent() {
StringBean sBean = new StringBean();
sBean.setLinks(true);
sBean.setCollapse(true);
sBean.setReplaceNonBreakingSpaces(true);
sBean.setURL("http://tieba.baidu.com/p/1347940189");
// System.out.println("This content is:"+sBean.getStrings());
return sBean.getStrings();
}
}
Seven_Tee 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 dyb198775 的回复:]
引用 18 楼 seven_tee 的回复:
引用 17 楼 dyb198775 的回复:
引用 16 楼 seven_tee 的回复:
怎么没人。。

给你写下代码。

Java code

public static void main(String[] args) {
String htmlcode = ReadUrl.getHtml("http://tieba.baid……
[/Quote]



String htmlcode = ReadUrl.getHtml("http://tieba.baidu.com/p/1347940189");
我这段代码的ReadUrl报错,导什么包?
bin_yy 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 seven_tee 的回复:]
引用 17 楼 dyb198775 的回复:
引用 16 楼 seven_tee 的回复:
怎么没人。。

给你写下代码。

Java code

public static void main(String[] args) {
String htmlcode = ReadUrl.getHtml("http://tieba.baidu.com/p/1347940189");
P……
[/Quote]

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import org.htmlparser.Parser;
import org.htmlparser.beans.StringBean;
import org.htmlparser.util.ParserException;
import org.htmlparser.visitors.HtmlPage;
Seven_Tee 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 dyb198775 的回复:]
引用 16 楼 seven_tee 的回复:
怎么没人。。

给你写下代码。

Java code

public static void main(String[] args) {
String htmlcode = ReadUrl.getHtml("http://tieba.baidu.com/p/1347940189");
Parser ……
[/Quote]


ReadUrl 需要导什么包啊?
bin_yy 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 seven_tee 的回复:]
怎么没人。。
[/Quote]
给你写下代码。
public static void main(String[] args) {
String htmlcode = ReadUrl.getHtml("http://tieba.baidu.com/p/1347940189");
Parser parser = Parser.createParser(htmlcode, "GBK");
HtmlPage page = new HtmlPage(parser);
try
{
parser.visitAllNodesWith(page);
}
catch (ParserException e1)
{
e1 = null;
}
// 显示标题
System.out.println(page.getTitle());
// 显示文本
System.out.println(getContent());
}

private static String getContent() {
StringBean sBean = new StringBean();
sBean.setLinks(true);
sBean.setCollapse(true);
sBean.setReplaceNonBreakingSpaces(true);
sBean.setURL("http://tieba.baidu.com/p/1347940189");
// System.out.println("This content is:"+sBean.getStrings());
return sBean.getStrings();
}
Seven_Tee 2012-01-04
  • 打赏
  • 举报
回复
怎么没人。。
LucEaspe 2012-01-03
  • 打赏
  • 举报
回复
看下API啊。
用个 Filter 过滤 title
Seven_Tee 2012-01-03
  • 打赏
  • 举报
回复
我就想抓取一个网站的纯文本标题,和内容。。。
这个有办法实现么。。。还有人在吗。。。求帮助~
Seven_Tee 2012-01-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 leehomwong 的回复:]
Java code

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class URLUtil {

public static String getHtml(Str……
[/Quote]

说错了,我是说 我不想让它显示html代码,只显示纯的文本。。需要怎么改呢
Seven_Tee 2012-01-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 leehomwong 的回复:]
Java code

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class URLUtil {

public static String getHtml(Str……
[/Quote]

我只想抓取它的标题,应该怎么改呢?
24K純帥 2012-01-03
  • 打赏
  • 举报
回复
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class URLUtil {

public static String getHtml(String urlString) {
try {
StringBuffer html = new StringBuffer();
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStreamReader isr = new InputStreamReader(conn.getInputStream());
BufferedReader br = new BufferedReader(isr);
String temp;
while ((temp = br.readLine()) != null) {
html.append(temp).append("\n");
}
br.close();
isr.close();
return html.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

public static void main(String[] args) {
System.out.println(URLUtil.getHtml("http://www.fastunit.com"));
}
}
Seven_Tee 2012-01-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 z740003446 的回复:]
用流读取网页,后以字符串输出就行了 ,(字符串你应该会处理)后再根据你的目标选取节点
[/Quote]

可以具体一点么,我htmlparser一点都不理解啊
z740003446 2012-01-03
  • 打赏
  • 举报
回复
用流读取网页,后以字符串输出就行了 ,(字符串你应该会处理)后再根据你的目标选取节点
加载更多回复(1)

81,115

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧