`
yongjiucui
  • 浏览: 18552 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

htmlparser实现从网页上抓取数据(收集)

    博客分类:
  • Java
阅读更多

【引用】htmlparser实现从网页上抓取数据(收集)  

2011-04-29 11:27:47|  分类: java |  标签: |字号 订阅

package parser;

 

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.MalformedURLException;

import java.net.URL;

 

/**

 * 基本能实现网页抓取,不过要手动输入URL 将整个html内容保存到指定文件

 *

 * @author chenguoyong

 *

 */

public class ScrubSelectedWeb {

       private final static String CRLF = System.getProperty("line.separator");

 

       /**

        * @param args

        */

       public static void main(String[] args) {

              try {

                     URL ur = new URL("http://10.249.187.199:8083/injs100/");

                     InputStream instr = ur.openStream();

                     String s, str;

                     BufferedReader in = new BufferedReader(new InputStreamReader(instr));

                     StringBuffer sb = new StringBuffer();

                     BufferedWriter out = new BufferedWriter(new FileWriter(

                                   "D:/outPut.txt"));

                     while ((s = in.readLine()) != null) {

                            sb.append(s + CRLF);

                     }

                     System.out.println(sb);

                     str = new String(sb);

                     out.write(str);

                     out.close();

                     in.close();

              } catch (MalformedURLException e) {

                     e.printStackTrace();

              } catch (IOException e) {

                     e.printStackTrace();

              }

 

       }

 

}

基本能实现网页抓取,不过要手动输入URL,此外没有重构。只是一个简单的思路。

 

1.htmlparser 使用

htmlparser是一个纯的java写的html解析的库,htmlparser不依赖于其它的java库,htmlparser主要用于改造 或提取htmlhtmlparser能超高速解析html,而且不会出错。毫不夸张地说,htmlparser就是目前最好的html 析和分析的工具。无论你是想抓取网页数据还是改造html的内容,用了htmlparser绝对会忍不住称赞。由于htmlparser 结构设计精良,所以扩展htmlparser 非常便利。

 

Htmlparser中文论坛.  http://bbs.hexiao.cn/thread.php?fid=6

 

Constructor Summary

Parser()

Parser(URLConnection connection)
          Construct a parser using the provided URLConnection.

Method:

static Parser createParser(String html, String charset)
          Creates the parser on an input string.

 void visitAllNodesWith(NodeVisitor visitor)
          Apply the given visitor to the current page.

 

HtmlPage(Parser parser)

 NodeList

getBody()
           

 TableTag[]

getTables()
           

 String

getTitle()
           

 void

setTitle(String title)
           

 void

visitTag(Tag tag)
          Called for each
Tag visited.

 

 

Constructor Summary

NodeList()
           

 

NodeList(Node node)
          Create a one element node list.

 

  NodeList extractAllNodesThatMatch(NodeFilter filter)
          Filter the list with the given filter non-recursively.
 

NodeList extractAllNodesThatMatch(NodeFilter filter, boolean recursive)
          Filter the list with the given filter.

 Node elementAt(int i)

 

 

1. html代码里面所有的链接地址和链接名称

 

package parser;

 

import org.htmlparser.Parser;

import org.htmlparser.Node;

import org.htmlparser.NodeFilter;

import org.htmlparser.Parser;

import org.htmlparser.filters.TagNameFilter;

import org.htmlparser.tags.LinkTag;

import org.htmlparser.tags.TableTag;

import org.htmlparser.util.NodeList;

import org.htmlparser.util.ParserException;

import org.htmlparser.visitors.HtmlPage;

 

/**

 * htmlparser取得一段html代码里面所有的链接地址和链接名称

 *

 * @author chenguoyong

 *

 */

public class Testhtmlparser {

 

       /**

        * @param args

        */

       public static void main(String[] args) {

              String htmlcode = "<HTML><HEAD><TITLE>AAA</TITLE></HEAD><BODY>"

                            + "<a href='http://topic.csdn.net/u/20080522/14/0ff402ef-c382-499a-8213-ba6b2f550425.html'>连接1</a>"

                            + "<a href='http://topic.csdn.net'>连接2</a></BODY></HTML>";

              // 创建Parser对象根据传给字符串和指定的编码

              Parser parser = Parser.createParser(htmlcode, "GBK");

              // 创建HtmlPage对象HtmlPage(Parser parser)

              HtmlPage page = new HtmlPage(parser);

              try {

                     // HtmlPage extends visitor,Apply the given visitor to the current

                     // page.

                     parser.visitAllNodesWith(page);

              } catch (ParserException e1) {

                     e1 = null;

              }

              // 所有的节点

              NodeList nodelist = page.getBody();

              // 建立一个节点filter用于过滤节点

              NodeFilter filter = new TagNameFilter("A");

              // 得到所有过滤后,想要的节点

              nodelist = nodelist.extractAllNodesThatMatch(filter, true);

              for (int i = 0; i < nodelist.size(); i++) {

                     LinkTag link = (LinkTag) nodelist.elementAt(i);

                     // 链接地址

                     System.out.println(link.getAttribute("href") + "\n");

                     // 链接名称

                     System.out.println(link.getStringText());

              }

 

       }

 

}

 

结果如下:

http://topic.csdn.net/u/20080522/14/0ff402ef-c382-499a-8213-ba6b2f550425.html

连接1

http://topic.csdn.net

连接2

 

2. 使用HtmlParser抓去网页内容

package parser;

 

import org.htmlparser.Parser;

import org.htmlparser.beans.StringBean;

import org.htmlparser.filters.NodeClassFilter;

import org.htmlparser.parserapplications.StringExtractor;

import org.htmlparser.tags.BodyTag;

import org.htmlparser.util.NodeList;

import org.htmlparser.util.ParserException;

 

/**

 * 使用HtmlParser抓去网页内容: 要抓去页面的内容最方便的方法就是使用StringBean. 里面有几个控制页面内容的几个参数.

 * 在后面的代码中会有说明. Htmlparser包中还有一个示例StringExtractor 里面有个直接得到内容的方法,

 * 其中也是使用了StringBean . 另外直接解析Parser的每个标签也可以的.

 *

 * @author chenguoyong

 *

 */

public class GetContent {

       public void getContentUsingStringBean(String url) {

              StringBean sb = new StringBean();

              sb.setLinks(true); // 是否显示web页面的连接(Links)

              // 为了取得页面的整洁美观一般设置上面两项为true , 如果要保持页面的原有格式, 如代码页面的空格缩进 可以设置为false

              sb.setCollapse(true); // 如果是true的话把一系列空白字符用一个字符替代.

              sb.setReplaceNonBreakingSpaces(true);// If true regular space

              sb

                            .setURL("http://www.blogjava.net/51AOP/archive/2006/07/19/59064.html");

              System.out.println("The Content is :\n" + sb.getStrings());

 

       }

 

       public void getContentUsingStringExtractor(String url, boolean link) {

              // StringExtractor内部机制和上面的一样.做了一下包装

              StringExtractor se = new StringExtractor(url);

              String text = null;

              try {

                     text = se.extractStrings(link);

                     System.out.println("The content is :\n" + text);

              } catch (ParserException e) {

                     e.printStackTrace();

              }

       }

 

       public void getContentUsingParser(String url) {

              NodeList nl;

              try {

                     Parser p = new Parser(url);

                     nl = p.parse(new NodeClassFilter(BodyTag.class));

                     BodyTag bt = (BodyTag) nl.elementAt(0);

                     System.out.println(bt.toPlainTextString()); // 保留原来的内容格式. 包含js代码

              } catch (ParserException e) {

                     e.printStackTrace();

              }

       }

 

       /**

        * @param args

        */

       public static void main(String[] args) {

              String url = "http://www.blogjava.net/51AOP/archive/2006/07/19/59064.html";

              //new GetContent().getContentUsingParser(url);

              //--------------------------------------------------

              new GetContent().getContentUsingStringBean(url);

 

       }

 

}

 

3.将整个html内容保存到指定文件

 

package parser;

 

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.MalformedURLException;

import java.net.URL;

 

/**

 * 基本能实现网页抓取,不过要手动输入URL 将整个html内容保存到指定文件

 *

 * @author chenguoyong

 *

 */

public class ScrubSelectedWeb {

       private final static String CRLF = System.getProperty("line.separator");

 

       /**

        * @param args

        */

       public static void main(String[] args) {

              try {

                     URL ur = new URL("http://www.google.cn/");

                     InputStream instr = ur.openStream();

                     String s, str;

                     BufferedReader in = new BufferedReader(new InputStreamReader(instr));

                     StringBuffer sb = new StringBuffer();

                     BufferedWriter out = new BufferedWriter(new FileWriter(

                                   "D:/outPut.txt"));

                     while ((s = in.readLine()) != null) {

                            sb.append(s + CRLF);

                     }

                     System.out.println(sb);

                     str = new String(sb);

                     out.write(str);

                     out.close();

                     in.close();

              } catch (MalformedURLException e) {

                     e.printStackTrace();

              } catch (IOException e) {

                     e.printStackTrace();

              }

 

       }

 

}

 

4利用htmlparser提取网页纯文本的例子

 

package parser;

 

import org.htmlparser.Node;

import org.htmlparser.NodeFilter;

import org.htmlparser.Parser;

import org.htmlparser.filters.TagNameFilter;

import org.htmlparser.tags.TableTag;

import org.htmlparser.util.NodeList;

 

/**

 * 标题:利用htmlparser提取网页纯文本的例子

 */

public class TestHTMLParser2 {

       /**

        * 读取目标html内容

        *

        */

       public static void testHtml() {

              try {

                     String sCurrentLine;

                     String sTotalString;

                     sCurrentLine = "";

                     sTotalString = "";

                     java.io.InputStream l_urlStream;

                     java.net.URL l_url = new java.net.URL(

                                   "http://10.249.187.199:8083/injs100/");

                     java.net.HttpURLConnection l_connection = (java.net.HttpURLConnection) l_url

                                   .openConnection();

                     l_connection.connect();

                     l_urlStream = l_connection.getInputStream();

                     java.io.BufferedReader l_reader = new java.io.BufferedReader(

                                   new java.io.InputStreamReader(l_urlStream));

                     while ((sCurrentLine = l_reader.readLine()) != null) {

                            sTotalString += sCurrentLine + "\r\n";

                     }

 

                     String testText = extractText(sTotalString);

              } catch (Exception e) {

                     e.printStackTrace();

              }

 

       }

    /**

     * 抽取纯文本信息

     * @param inputHtmlhtml文本

     * @return

     * @throws Exception

     */

       public static String extractText(String inputHtml) throws Exception {

              StringBuffer text = new StringBuffer();

              Parser parser = Parser.createParser(new String(inputHtml.getBytes(),

                            "GBK"), "GBK");

              // 遍历所有的节点

              NodeList nodes = parser.extractAllNodesThatMatch(new NodeFilter() {

                     public boolean accept(Node node) {

                            return true;

                     }

              });

 

              System.out.println(nodes.size());

              for (int i = 0; i < nodes.size(); i++) {

                     Node nodet = nodes.elementAt(i);

                     //字符串的代表性节点:节点的描述

                     text.append(new String(nodet.toPlainTextString().getBytes("GBK"))

                                   + "\r\n");

              }

              return text.toString();

       }

    /**

     *  读取文件的方式/utl 来分析内容. filePath也可以是一个Url.

     * @param resource :文件/Url

     * @throws Exception

     */

       public static void test5(String resource) throws Exception {

              Parser myParser = new Parser(resource);

              myParser.setEncoding("GBK");

              String filterStr = "table";

              NodeFilter filter = new TagNameFilter(filterStr);

              NodeList nodeList = myParser.extractAllNodesThatMatch(filter);

              /*for(int i=0;i<nodeList.size();i++)

              {

                     TableTag tabletag = (TableTag) nodeList.elementAt(i);

                     //标签名称

                     System.out.println(tabletag.getTagName());

                     System.out.println(tabletag.getText());

              }*/

              TableTag tabletag = (TableTag) nodeList.elementAt(1);

             

             

             

 

       }

 

       public static void main(String[] args) throws Exception {

              test5("http://10.249.187.199:8083/injs100/");

              //testHtml();

       }

}

 

5.html解析table

 

package parser;

 

import org.apache.log4j.Logger;

import org.htmlparser.NodeFilter;

import org.htmlparser.Parser;

import org.htmlparser.filters.NodeClassFilter;

import org.htmlparser.filters.OrFilter;

import org.htmlparser.filters.TagNameFilter;

import org.htmlparser.tags.TableColumn;

import org.htmlparser.tags.TableRow;

import org.htmlparser.tags.TableTag;

import org.htmlparser.util.NodeList;

import org.htmlparser.util.ParserException;

 

import junit.framework.TestCase;

 

public class ParserTestCase extends TestCase {

       private static final Logger logger = Logger.getLogger(ParserTestCase.class);

 

       public ParserTestCase(String name) {

              super(name);

       }

 

       /**

        * 测试对<table>

        * <tr>

        * <td></td>

        * </tr>

        * </table>的解析

        */

       public void testTable() {

              Parser myParser;

              NodeList nodeList = null;

              myParser = Parser

                            .createParser(

                                          "<body> "

                                                        + "<table id=table1 >"

                                                        + "<tr id='tro1'><td>1-11</td><td>1-12</td><td>1-13</td></tr>"

                                                        + "<tr id='tro2'><td>1-21</td><td>1-22</td><td>1-23</td></tr>"

                                                        + "<tr id='tro3'><td>1-31</td><td>1-32</td><td>1-33</td></tr></table>"

                                                        + "<table id=table2 >"

                                                        + "<tr id='tro4'><td>2-11</td><td>2-12</td><td>2-13</td></tr>"

                                                        + "<tr id='tro5'><td>2-21</td><td>2-22</td><td>2-23</td></tr>"

                                                        + "<tr id='tro6'><td>2-31</td><td>2-32</td><td>2-33</td></tr></table>"

                                                        + "</body>", "GBK");

              NodeFilter tableFilter = new NodeClassFilter(TableTag.class);

              OrFilter lastFilter = new OrFilter();

              lastFilter.setPredicates(new NodeFilter[] { tableFilter });

              try {

                     nodeList = myParser.parse(lastFilter);

                     for (int i = 0; i <= nodeList.size(); i++) {

                            if (nodeList.elementAt(i) instanceof TableTag) {

                                   TableTag tag = (TableTag) nodeList.elementAt(i);

                                   TableRow[] rows = tag.getRows();

 

                                   for (int j = 0; j < rows.length; j++) {

                                          TableRow tr = (TableRow) rows[j];

                                          System.out.println(tr.getAttribute("id"));

                                          if (tr.getAttribute("id").equalsIgnoreCase("tro1")) {

                                                 TableColumn[] td = tr.getColumns();

                                                 for (int k = 0; k < td.length; k++) {

 

                                                        // logger.fatal("<td>" +

                                                        // td[k].toPlainTextString());

                                                        System.out.println("<td>"

                                                                      + td[k].toPlainTextString());

                                                 }

                                          }

 

                                   }

 

                            }

                     }

 

              } catch (ParserException e) {

                     e.printStackTrace();

              }

       }

 

       /**

        * 得到目标数据

        *

        * @param url:目标url

        * @throws Exception

        */

       public static void getDatabyUrl(String url) throws Exception {

              Parser myParser = new Parser(url);

              NodeList nodeList = null;

              myParser.setEncoding("gb2312");

              NodeFilter tableFilter = new NodeClassFilter(TableTag.class);

              OrFilter lastFilter = new OrFilter();

              lastFilter.setPredicates(new NodeFilter[] { tableFilter });

              try {

                     nodeList = myParser.parse(lastFilter);

                     // 可以从数据tablesize:19-21开始到结束

                     for (int i = 15; i <= nodeList.size(); i++) {

                            if (nodeList.elementAt(i) instanceof TableTag) {

                                   TableTag tag = (TableTag) nodeList.elementAt(i);

                                   TableRow[] rows = tag.getRows();

                                   for (int j = 0; j < rows.length; j++) {

                                          TableRow tr = (TableRow) rows[j];

                                          if (tr.getAttribute("id") != null

                                                        && tr.getAttribute("id").equalsIgnoreCase(

                                                                      "tr02")) {

                                                 TableColumn[] td = tr.getColumns();

                                                 // 对不起,没有你要查询的记录!

                                                 if (td.length == 1) {

                                                        System.out.println("对不起,没有你要查询的记录");

                                                 } else {

                                                        for (int k = 0; k < td.length; k++) {

                                                               System.out.println("<td>内容:"

                                                                             + td[k].toPlainTextString().trim());

                                                        }

                                                 }

 

                                          }

 

                                   }

 

                            }

                     }

 

              } catch (ParserException e) {

                     e.printStackTrace();

              }

 

       }

 

       /**

        * 测试已经得出有数据时table:22个,没有数据时table:19

        *

        * @param args

        */

       public static void main(String[] args) {

              try {

 

                     // getDatabyUrl("http://gd.12530.com/user/querytonebytype.do?field=tonecode&condition=619505000000008942&type=1006&pkValue=619505000000008942");

                     getDatabyUrl("http://gd.12530.com/user/querytonebytype.do?field=tonecode&condition=619272000000001712&type=1006&pkValue=619272000000001712");

              } catch (Exception e) {

 

                     e.printStackTrace();

              }

       }

 

}

 

6.html解析常用

 

 

package com.jscud.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;

import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.filters.NodeClassFilter;
import org.htmlparser.filters.OrFilter;
import org.htmlparser.nodes.TextNode;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;
import org.htmlparser.visitors.HtmlPage;
import org.htmlparser.visitors.TextExtractingVisitor;

import com.jscud.util.LogMan; //
一个日志记录类

/**
*
演示了Html Parse的应用.
*
* @author scud http://www.jscud.com (http://www.jscud.com/)
*/

public class ParseHtmlTest
{

public static void main(String[] args) throws Exception
{
String aFile = "e:/jscud/temp/test.htm";

String content = readTextFile(aFile, "GBK");

test1(content);
System.out.println("====================================");

test2(content);
System.out.println("====================================");

test3(content);
System.out.println("====================================");

test4(content);
System.out.println("====================================");

test5(aFile);
System.out.println("====================================");

//
访问外部资源,相对慢
test5("http://www.jscud.com (http://www.jscud.com/)");
System.out.println("====================================");

}

/**
*
读取文件的方式来分析内容.
* filePath
也可以是一个Url.
*
* @param resource
文件/Url
*/
public static void test5(String resource) throws Exception
{
Parser myParser = new Parser(resource);

//
设置编码
myParser.setEncoding("GBK");

HtmlPage visitor = new HtmlPage(myParser);

myParser.visitAllNodesWith(visitor);

String textInPage = visitor.getTitle();

System.out.println(textInPage);
}

/**
*
按页面方式处理.对一个标准的Html页面,推荐使用此种方式.
*/
public static void test4(String content) throws Exception
{
Parser myParser;
myParser = Parser.createParser(content, "GBK");

HtmlPage visitor = new HtmlPage(myParser);

myParser.visitAllNodesWith(visitor);

String textInPage = visitor.getTitle();

System.out.println(textInPage);
}

/**
*
利用Visitor模式解析html页面.
*
*
小优点:翻译了<>等符号
*
缺点:好多空格,无法提取link
*
*/
public static void test3(String content) throws Exception
{
Parser myParser;
myParser = Parser.createParser(content, "GBK");

TextExtractingVisitor visitor = new TextExtractingVisitor();

myParser.visitAllNodesWith(visitor);

String textInPage = visitor.getExtractedText();

System.out.println(textInPage);
}

/**
*
得到普通文本和链接的内容.
*
*
使用了过滤条件.
*/
public static void test2(String content) throws ParserException
{
Parser myParser;
NodeList nodeList = null;

myParser = Parser.createParser(content, "GBK");

NodeFilter textFilter = new NodeClassFilter(TextNode.class);
NodeFilter linkFilter = new NodeClassFilter(LinkTag.class);

//
暂时不处理 meta
//NodeFilter metaFilter = new NodeClassFilter(MetaTag.class);

OrFilter lastFilter = new OrFilter();
lastFilter.setPredicates(new NodeFilter[] { textFilter, linkFilter });

nodeList = myParser.parse(lastFilter);

Node[] nodes = nodeList.toNodeArray();

for (int i = 0; i < nodes.length; i++)
{
Node anode = (Node) nodes[i];

String line = "";
if (anode instanceof TextNode)
{
TextNode textnode = (TextNode) anode;
//line = textnode.toPlainTextString().trim();
line = textnode.getText();
}
else if (anode instanceof LinkTag)
{
LinkTag linknode = (LinkTag) anode;

line = linknode.getLink();
//@todo ("")
过滤jsp标签:可以自己实现这个函数
//line = StringFunc.replace(line, "<%.*%>", "");
}

if (isTrimEmpty(line))
continue;

System.out.println(line);
}
}

/**
*
解析普通文本节点.
*
* @param content
* @throws ParserException
*/
public static void test1(String content) throws ParserException
{
Parser myParser;
Node[] nodes = null;

myParser = Parser.createParser(content, null);

nodes = myParser.extractAllNodesThatAre(TextNode.class); //exception could be thrown here

for (int i = 0; i < nodes.length; i++)
{
TextNode textnode = (TextNode) nodes[i];
String line = textnode.toPlainTextString().trim();
if (line.equals(""))
continue;
System.out.println(line);
}

}

/**
*
读取一个文件到字符串里.
*
* @param sFileName
文件名
* @param sEncode String
* @return
文件内容
*/
public static String readTextFile(String sFileName, String sEncode)
{
StringBuffer sbStr = new StringBuffer();

try
{
File ff = new File(sFileName);
InputStreamReader read = new InputStreamReader(new FileInputStream(ff),
sEncode);
BufferedReader ins = new BufferedReader(read);

String dataLine = "";
while (null != (dataLine = ins.readLine()))
{
sbStr.append(dataLine);
sbStr.append("\r\n");
}

ins.close();
}
catch (Exception e)
{
LogMan.error("read Text File Error", e);
}

return sbStr.toString();
}

/**
*
去掉左右空格后字符串是否为空
* @param astr String
* @return boolean
*/
public static boolean isTrimEmpty(String astr)
{
if ((null == astr) || (astr.length() == 0))
{
return true;
}
if (isBlank(astr.trim()))
{
return true;
}
return false;
}

/**
*
字符串是否为空:null或者长度为0.
* @param astr
源字符串.
* @return boolean
*/
public static boolean isBlank(String astr)
{
if ((null == astr) || (astr.length() == 0))
{
return true;
}
else
{
return false;
}
}

}

分享到:
评论

相关推荐

    htmlparser实现从网页上抓取数据doc

    例如,如果要从网页中抓取特定类别的链接,我们可以创建一个`NodeVisitor`,在访问`Tag`时检查其是否为`&lt;a&gt;`标签,并收集相关信息。 总之,HTMLParser提供了一种灵活且高效的方式,帮助Java开发者解析和处理HTML...

    java利用htmlparser抓取网页数据

    在IT行业中,网络爬虫是一项重要的技能,它能够自动化地从互联网上收集和处理大量信息。Java作为一种广泛应用的编程语言,提供了多种库来实现网页抓取。本篇将重点讲解如何利用HTMLParser库在Java中抓取网页数据。 ...

    Htmlparser 网页内容抓取java

    2. **链接抓取**:构建网络爬虫,遍历网页上的所有链接,实现全网信息的自动化搜集。 3. **格式转换**:将不规范的HTML转换为结构化的XML或JSON,便于后续处理。 4. **内容过滤**:去除HTML中的广告、脚本或者其他...

    htmlparser 资料集合

    `htmlparser实现从网页上抓取数据.doc`文档可能包含了一个实际的案例,演示了如何使用HTMLParser从网页抓取特定信息。这种例子通常会涵盖如何创建解析器实例、注册事件处理器(如`SimpleHTMLHandler`),以及如何...

    HtmlParser

    网络爬虫,也称为网络蜘蛛或Web抓取器,是一种自动浏览互联网并收集信息的程序。它广泛应用于搜索引擎优化、数据分析、市场研究等多个领域。 在Python中,HTMLParser是内置的HTML解析器,它允许开发者编写自定义的...

    基于htmlparser的网页爬虫和java调用excel代码

    本项目就是利用HTMLParser库来编写一个基础的网页爬虫,用于爬取新浪新闻的数据,并将抓取到的数据存储到Excel表格中。以下是关于这个项目的一些关键知识点和实现细节: 1. **HTMLParser库**:HTMLParser是一个开源...

    网络爬虫htmlparser

    值得注意的是,网络爬虫在抓取数据时需要遵守网站的robots.txt协议,尊重网站的版权和用户隐私,避免过于频繁的请求导致服务器压力过大。此外,由于HTML结构的多样性,有时候需要根据目标网站的具体情况进行定制化的...

    HTMLParser提取网页内容

    在Web抓取或数据挖掘领域,HTMLParser是一个常用的工具,可以帮助我们从HTML源码中抽取有价值的文本信息,如网页正文、标题等。 在提供的代码片段中,`cleanHtml` 方法展示了如何使用正则表达式来清理HTML,移除...

    htmlparser1_6

    总结来说,HTMLParser1_6是一个用于HTML解析、网页匹配和数据抓取的工具,其核心功能包括高效地解析HTML结构、根据用户定义的规则进行网页匹配、自动化数据抓取以及对抓取数据的初步分析。开发者可以通过这个库轻松...

    Java使用HttpClient和HtmlParser实现的爬虫Demo.zip

    爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的...

    一个用java实现的抓取网站程序

    在IT领域,网络爬虫(spider)是一种用于自动化地从互联网上收集信息的程序。本项目是一个基于Java实现的网站抓取程序,利用多线程技术和HTML解析技术,同时具备防屏蔽功能,以高效、稳定的方式从目标网站获取数据。...

    htmlParser详细文档

    在Web开发和数据抓取领域,HTMLParser是必不可少的工具之一。以下是对HTMLParser的详细解析,包括其核心概念、功能、使用方法及示例。 1. **核心概念** - **DOM(Document Object Model)**: HTMLParser基于DOM...

    HtmlParser爬取气象信息实例

    HTMLParser是中国Python...结合其他工具,如`requests`库,我们可以构建一个完整的数据抓取系统,用于定期获取和分析气象网站上的实时或历史数据。这个实例对于学习Web抓取和数据分析的初学者来说是一个很好的起点。

    电信设备-一种基于HERITRIX和HTMLPARSER商品信息提取方法.zip

    HERITRIX是一个开源的网络爬虫软件,用于抓取互联网上的网页信息;而HTMLPARSER则是一个Java库,用于解析HTML文档,提取其中的结构化数据。这种技术在电子商务和数据分析中非常常见,尤其是在电信设备市场,可以用来...

    HtmlParser和HttpClient学习资料

    在IT领域,网络爬虫是获取大量数据的重要手段,而`HtmlParser`和`HttpClient`则是构建网络爬虫时常用到的两个关键工具。本文将详细介绍这两个库,并结合学习资料来探讨它们在实际应用中的作用。 `HtmlParser`通常是...

    Java爬虫,信息抓取的实现 完整实例源码

    Java爬虫是编程领域中一个重要的技术分支,主要用于自动化地从互联网上抓取大量信息。在本实例中,我们将深入探讨如何使用Java实现一个简单的网页爬虫,以及它背后的原理和关键技术。 首先,我们需要理解爬虫的基本...

    基于htmlparser爬虫示例(图片).rar

    HTMLParser是Java中用于解析...理解并掌握如何构建基于HTMLParser的爬虫,不仅可以帮助我们高效地抓取网页上的图片,还能为其他类型的数据抓取奠定基础。通过不断实践和优化,我们可以构建出更加健壮和高效的爬虫系统。

    使用HTMLPARSER和HTTPCLIENT制作网络爬虫,附赠相关技术文档。

    总的来说,HTMLPARSER和HTTPCLIENT是构建网络爬虫的重要工具,它们可以帮助开发者高效地抓取和解析网页数据,从而实现自动化的信息收集和分析。通过不断学习和实践,你可以掌握更多网络爬虫的技巧,应对更复杂的网页...

    lucene_JE分词_htmlParser--jar包

    这对于从网页中获取数据,比如搜索引擎抓取网页内容,是非常有用的。 在描述中提到的“jar包”,指的是Java Archive,是Java平台的标准打包机制,用于收集多个类文件、相关的元数据和其他资源(如图像文件或声音...

Global site tag (gtag.js) - Google Analytics