案例研究:4.2 抽取Web数据-HTML网页的数据抽取

优采云 发布时间: 2022-10-21 06:15

  案例研究:4.2 抽取Web数据-HTML网页的数据抽取

  超文本标记语言,简称HTML,是超文本标记语言

  它收录一组标记标签,主要用于创建和描述网页。HTML 可以以文档的形式呈现,其中收录 HTML 标记和纯文本。其中 HTML 标记用尖括号 关键词 括起来,例如和

  基于数据库技术的HTML网页提取技术研究经历了手动、*敏*感*词*和全自动三个阶段。

  在手动方法中,网页的模板由程序员手动分析,并借助某种编程语言针对特定问题生成特定的包装器。

  在*敏*感*词*的方法中,使用网页模板提取数据,使得生成具体包装器的部分由计算机接管,网页模板的分析仍然需要人工参与。

  在自动化的方法中,网页模板的分析部分也交给了计算机,几乎不需要人工参与,因此更适合*敏*感*词*、系统、连续的Web数据提取。

  通过Kettle工具提取HTML网页的数据,保存到数据库提取中的数据表html中。

  我们以从“豆瓣电影排行榜”网页中提取超链接数据为例进行数据提取。豆瓣电影排行榜页面的部分内容如图所示。

  通过使用Kettle工具,创建一个transform transform html_extract,并添加“自定义常量数据”输入控件、“HTTP客户端”查询控件和“Java代码”脚本控件,如图。

  重点是用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;

import java.io.InputStream;

import java.io.RandomAccessFile;

import java.net.URL;

import java.net.URLConnection;

private String result;

private String contents;

private Connection connection = null;

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException {

if (first) {

first = false;

/* TODO: Your code here. (Using info fields)

FieldHelper infoField = get(Fields.Info, "info_field_name");

RowSet infoStream = findInfoRowSet("info_stream_tag");

<p>

Object[] infoRow = null;

int infoRowCount = 0;

// Read all rows from info step before calling getRow() method, which returns first row from any

// input rowset. As rowMeta for info and input steps varies getRow() can lead to errors.

while((infoRow = getRowFrom(infoStream)) != null){

// do something with info data

infoRowCount++;

}

*/

}

try{

URL url = new URL("https://movie.douban.com/");

URLConnection conn = url.openConnection();

conn.setRequestProperty("accept","*/*");

conn.setRequestProperty("connection","Keep-Alive");

conn.setRequestProperty("user-agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36");

conn.connect();

InputStream input = conn.getInputStream();

byte[] buffer = new byte[1024];

int hasRead;

int length = 0;

String msg = "";

//输出到一个txt文件中

//FileWriter fw = new FileWriter("D:\\豆瓣电影排行榜.txt");

RandomAccessFile raf = new RandomAccessFile("F:\\kettle\\ETL\\5.数据\\output\\豆瓣电影排行榜.txt","rw");

while((hasRead =input.read(buffer)) != -1)

{

raf.write(buffer);

length += hasRead;

System.out.println("爬取进度:"+length);

}

raf.close();

  

logDebug("爬取完成!");

} catch (Exception e) {

logDebug("异常");

e.printStackTrace();

}

Object[] r = getRow();

if (r == null) {

setOutputDone();

return false;

}

// It is always safest to call createOutputRow() to ensure that your output row&#39;s Object[] is large

// enough to handle any new fields you are creating in this step.

r = createOutputRow(r, data.outputRowMeta.size());

/* TODO: Your code here. (See Sample)

// Get the value from an input field

String foobar = get(Fields.In, "a_fieldname").getString(r);

foobar += "bar";

// Set a value in a new output field

get(Fields.Out, "output_fieldname").setValue(r, foobar);

*/

// Send the row on to the next step.

putRow(data.outputRowMeta, r);

return true;

}

</p>

  最终运行如下

  可以获得以下内容。

  使用navicat工具查看数据表html是否成功插入66行数据。

  事实:SEO中流量下降?快来判断网站是否降权!

  网站流量突然下降,长尾关键词,核心关键词没有排名?快来看看网站有没有被降级!

  1、收录的大幅减少,甚至整个网站都是K或者主页是K,基本上是降级的标志。最可能的原因是 网站 的 原创 度数不高,甚至 采集伪原创 的 文章 也不高。站内文章太相似被百度处罚

  

  从这样的kk中恢复需要很长时间。继续更新 原创 然后发送外部链接是最好的方法。最好能在固定的时间点发送!

  2、网站不是第一名,关键词排名下降很多。百度排名是基于权重的。该网站的高权重在前面,而低权重在后面。如果网站首页在内页之后,说明首页的权重不如内页,那么网站一般会降级。但不一定,我们已经看到了很多例外。但是大部分都被降级了,那么如何判断是否正确呢?然后看看核心 关键词 有没有明显下降。如果没有明显下降,则证明它没有被降级。如果显着下降。证明 网站 已被降级!还伴随着不带www的排名比带www的排名要好,一般会降级!

  3.domain不在前三页!domain的值一般是一个外链(相关域),如果你的首页没有外链的前三页,就证明你的首页的权重很低。可能降级。但也不一定,比如一个特例:新站初期网站没有权重,那么就不是这样了。判断时,之前的域在前三页。后来没有这个,很有可能网站被降级了!

  

  4.第一个不带www的站点是一般不带www的站点:第一个是所有与百度相关的域名都会按照权重进行排名。第一个站点应该是权重最高的站点。,我们一般会推广带www的,但是如果你的网站第一个不带www,那么证明不带www的权重比带www的要高,那么网站很可能会被降级!

  总结:网站被降级了别着急,赶紧找原因,找到原因后再解决!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线