网页抓取数据百度百科(如何实现一下Java网络编程中的HTML又是啥 )

优采云 发布时间: 2021-11-02 18:12

  网页抓取数据百度百科(如何实现一下Java网络编程中的HTML又是啥

)

  为了巩固Java网络编程中的知识点,结合网上一些爬虫帖子,手写一个网络爬虫获取网站的信息,个人学习。. . 我不应该去喝茶 2333

  先看效果。根据DOM结构获取表单信息。输入关键字。运行程序以获取对标题和链接的查询。

  

  所以问题是,这些是什么,什么是蜘蛛?

  首先,让我解释一下Spider。根据百度百科上的定义:网络爬虫(也称为网络蜘蛛、网络机器人,在FOAF社区中,更多时候是网络追逐者),是一种自动抓取万维网上信息的程序或脚本。其他不太常用的名称是蚂蚁、自动索引、模拟器或蠕虫。它实际上是一个基于关键字的小脚本,用于获取 URL。什么?还是不明白?嗯,百度相当于一个写得很好的爬虫。. . 这次明白了。

  让我们开始解释如何实现它。

  当然,HTML 的处理是爬虫的重点。在此示例中,使用了 Java HTML 解析器。它可以直接解析一个 URL 地址和 HTML 文本内容。它提供了一个非常省力的API,可以通过DOM、CSS和类似jQuery的操作方法来检索和操作数据。

  Rule.java 实体类封装查询信息

  package util;

/**

* 规则类

*

* @author wyq

*

*/

public class Rule

{

/**

* 链接

*/

private String url;

/**

* 参数集合

*/

private String[] params;

/**

* 参数对应的值

*/

private String[] values;

/**

* 对返回的HTML,第一次过滤所用的标签,请先设置type

*/

private String resultTagName;

/**

* CLASS / ID / SELECTION

* 设置resultTagName的类型,默认为ID

*/

private int type = ID ;

/**

*GET / POST

* 请求的类型,默认GET

*/

private int requestMoethod = GET ;

public final static int GET = 0 ;

public final static int POST = 1 ;

public final static int CLASS = 0;

public final static int ID = 1;

public final static int SELECTION = 2;

public Rule()

{

}

public Rule(String url, String[] params, String[] values,

String resultTagName, int type, int requestMoethod)

{

super();

this.url = url;

this.params = params;

this.values = values;

this.resultTagName = resultTagName;

this.type = type;

this.requestMoethod = requestMoethod;

}

public String getUrl()

{

return url;

}

public void setUrl(String url)

{

this.url = url;

}

public String[] getParams()

{

return params;

}

public void setParams(String[] params)

{

this.params = params;

}

public String[] getValues()

{

return values;

}

public void setValues(String[] values)

{

this.values = values;

}

public String getResultTagName()

{

return resultTagName;

}

public void setResultTagName(String resultTagName)

{

this.resultTagName = resultTagName;

}

public int getType()

{

return type;

}

public void setType(int type)

{

this.type = type;

}

public int getRequestMoethod()

{

return requestMoethod;

}

public void setRequestMoethod(int requestMoethod)

{

this.requestMoethod = requestMoethod;

}

}

  LinkTypeDate 封装查询结果信息

  package util;

public class LinkTypeData

{

private int id;

/**

* 链接的地址

*/

private String linkHref;

/**

* 链接的标题

*/

private String linkText;

/**

* 摘要

*/

private String summary;

/**

* 内容

*/

private String content;

public int getId()

{

return id;

}

public void setId(int id)

{

this.id = id;

}

public String getLinkHref()

{

return linkHref;

}

public void setLinkHref(String linkHref)

{

this.linkHref = linkHref;

}

public String getLinkText()

{

return linkText;

}

public void setLinkText(String linkText)

{

this.linkText = linkText;

}

public String getSummary()

{

return summary;

}

public void setSummary(String summary)

{

this.summary = summary;

}

public String getContent()

{

return content;

}

public void setContent(String content)

{

this.content = content;

}

}

  用于测试的MainTest.java文件(内网真快了)

  package util;

import java.util.List;

public class MainTest {

public static void main(String[] args) {

// TODO Auto-generated method stub

MainTest mainTest=new MainTest();

mainTest.getDatasByCssQueryUserNEU();

}

public void printf(List datas) {

for (LinkTypeData data : datas) {

System.out.println(data.getLinkText());

System.out.println(data.getLinkHref());

System.out.println("***********************************");

}

}

public void getDatasByCssQueryUserNEU() {

Rule rule = new Rule("http://www.neupioneer.com", new String[] { "s" }, new String[] { "软件学院" }, null, -1,

Rule.GET);

List extracts = ExtractService.extract(rule);

printf(extracts);

}

}

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线