网页抓取数据百度百科(如何实现一下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);
}
}