kettle web数据抽取

1.新建转换并建立如图所示的三个步骤

kettle web数据抽取_第1张图片

2.点击自定义常量数据步骤进行编辑

        2.1 元数据中添加以下内容

         2.2 数据中填写filename和User-Agent

        2.3 filename User-Agent获取

        2.3.1 进入豆角网:https://www.doujiaow4.com/

        2.3.2.打开应用程序菜单选择更多工具中的web开发工具(快捷键为F12)

   打开后会呈现如下界面:   ​

kettle web数据抽取_第2张图片

        2.3.3 点击网络

kettle web数据抽取_第3张图片

         2.3.4 选择第一个单击后会出现如下界面,复制User-Agent填入2.2的步骤中

kettle web数据抽取_第4张图片

          2.3.5 点击确定后保存即可

3.HTTP client步骤编辑

kettle web数据抽取_第5张图片

kettle web数据抽取_第6张图片4.Java代码步骤编辑

        4.1 Java代码

import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
 
private String result;
private String contents;
private Connection connection = null;
 
 
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException,SQLException{
  if (first) {    
	result=getParameter("result");
	first = false;
  }
 
  Object[] r = getRow();
 
  if (r == null) {
    setOutputDone();
    return false;
  }
  Object[] outputRow = createOutputRow(r, data.outputRowMeta.size());
  String foobar = get(Fields.In, result).getString(r); 
  String pattern ="]*href(\\\"([^\\\"]*)\\\"|\\'([^\\']*)\\'|([^\\\\s>]*))[^>]*>(.*?)";
  Pattern patterns = Pattern.compile(pattern);
  Matcher m = patterns.matcher(foobar);
  while(m.find()){
		get(Fields.Out, "contents").setValue(outputRow, m.group().replaceAll("<[^>]*>",""));
		String url = "jdbc:mysql://localhost:3306/kettle";
		String userName = "root";
		String userPwd = "czp03043011";
			try{
				// 加载驱动程序
				Class.forName("com.mysql.jdbc.Driver");
				// 获取连接对象
				connection= (Connection) DriverManager.getConnection(url, userName, userPwd);
				} catch (Exception e) {
					e.printStackTrace();
				}
				//要执行的SQL语句
				String sql="insert into html (contents) values (?);";
				PreparedStatement stat = (PreparedStatement) connection.prepareStatement(sql);
				contents=m.group().replaceAll("<[^>]*>","");
				stat.setString(1, contents);
				//3.ResultSet类,用来存放获取的结果集!!	
				stat.executeUpdate();
 
  			putRow(data.outputRowMeta, outputRow);
			}
  return true;
 
}

        4.2 点击底部的字段设置,填写以下内容

kettle web数据抽取_第7张图片

         4.3 点击参数设置,填写以下内容

kettle web数据抽取_第8张图片

         4.4 记得点击确定保存!

5.运行结果及数据展示

kettle web数据抽取_第9张图片

 html表抽取结果

kettle web数据抽取_第10张图片

 

 

 

你可能感兴趣的:(数据库,etl,sql)