实时抓取网页数据(httpclient+jsoup提取网页数据的分类汇总,值得收藏!)

优采云 发布时间: 2021-09-23 08:14

  实时抓取网页数据(httpclient+jsoup提取网页数据的分类汇总,值得收藏!)

  在许多行业中,必须行业的数据进行分类,分析行业数据。对于公司未来的发展,有一个很好的参考和横向对比。因此,在实际工作中,我们可能会遇到数据采集这个概念,数据采集的最终目标是获取数据,提取数据提取和数据分类汇总有用的数据。

  很多人都在第一时间我学到的数据采集,我可能无法启动,特别是作为一个新手,但我觉得很别扭,所以我将分享我自己的经验,我希望能够分享技术与每一个人。如果有任何不足之处,请参考你。写这个目的,我希望每个人都会成长,我也相信,没有高低,只有互补,仅共享,可以使对方变得更加。

  当我们在Web数据采集,我们倾向于穿过这些大步骤:

  1通过URL地址2获得幅材源代码3提取物,我们有通过网络的源代码4以提取对数据进行格式化,以获得我们所需要的数据的目标数据中读取目标页面。

  这是一个*敏*感*词*,我希望每个人都知道

  

  了解基本的过程,下来,我知道如何提取我们需要的情况下的数据,并提取数据提取可以用正则表达式中提取,或使用的HttpClient + JSOUP中提取,在这里,不解释HttpClient的+ JSou提取有关网络数据信息,将使了HTTPClient + JSou的专项说明后,在这里,开始讲解如何使用正则表达式提取数据。

  我在这里找到了网站:我们要提取里面的数据,最终的结果,我们不得不提的是型号,数量,报价,供应商,首先我们看到的这款网站整个页预览

  

  接下来,我们看一下在网络源结构:

  

  上面的源代码可以清楚明确,我们将提取整个网络数据为整个网页数据。

  

  import java.io.BufferedReader;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

import java.util.ArrayList;

import java.util.List;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class HTMLPageParser {

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

//目的网页URL地址

getURLInfo("http://www.ic.net.cn/userSite/publicQuote/quotes_list.php","utf-8");

}

public static List getURLInfo(String urlInfo,String charset) throws Exception {

//读取目的网页URL地址,获取网页源码

URL url = new URL(urlInfo);

HttpURLConnection httpUrl = (HttpURLConnection)url.openConnection();

InputStream is = httpUrl.getInputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(is,"utf-8"));

StringBuilder sb = new StringBuilder();

String line;

while ((line = br.readLine()) != null) {

//这里是对链接进行处理

line = line.replaceAll("]*>", "");

//这里是对样式进行处理

line = line.replaceAll("]*>", "");

sb.append(line);

}

is.close();

br.close();

//获得网页源码

return getDataStructure(sb.toString().trim());

}

static Pattern proInfo

= Pattern.compile("(.*?)\\s*(.*?)\\s*(.*?)\\s*(.*?)\\s*(.*?)", Pattern.DOTALL);

private static List getDataStructure(String str) {

//运用正则表达式对获取的网页源码进行数据匹配,提取我们所要的数据,在以后的过程中,我们可以采用httpclient+jsoup,

//现在暂时运用正则表达式对数据进行抽取提取

String[] info = str.split("");

List list = new ArrayList();

for (String s : info) {

Matcher m = proInfo.matcher(s);

Product p = null;

if (m.find()) {

p = new Product();

//设置产品型号

String[] ss = m.group(1).trim().replace(" ", "").split(">");

p.setProStyle(ss[1]);

//设置产品数量

p.setProAmount(m.group(2).trim().replace(" ", ""));

//设置产品报价

p.setProPrice(m.group(4).trim().replace(" ", ""));

//设置产品供应商

p.setProSupplier(m.group(5).trim().replace(" ", ""));

list.add(p);

}

}

//这里对集合里面不是我们要提取的数据进行移除

list.remove(0);

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

System.out.println("产品型号:"+list.get(i).getProStyle()+",产品数量:"+list.get(i).getProAmount()

+",产品报价:"+list.get(i).getProPrice()+",产品供应商:"+list.get(i).getProSupplier());

}

return list;

}

}

class Product {

private String proStyle;//产品型号

private String proAmount;//产品数量

private String proPrice;//产品报价

private String proSupplier;//产品供应商

public String getProStyle() {

return proStyle;

}

public void setProStyle(String proStyle) {

this.proStyle = proStyle;

}

public String getProSupplier() {

return proSupplier;

}

public void setProSupplier(String proSupplier) {

this.proSupplier = proSupplier;

}

public String getProAmount() {

return proAmount;

}

public void setProAmount(String proAmount) {

this.proAmount = proAmount;

}

public String getProPrice() {

return proPrice;

}

public void setProPrice(String proPrice) {

this.proPrice = proPrice;

}

public Product() {

}

@Override

public String toString() {

return "Product [proAmount=" + proAmount + ", proPrice=" + proPrice

+ ", proStyle=" + proStyle + ", proSupplier=" + proSupplier

+ "]";

}

}

  

  确定,运行上述程序,我们得到以下数据,即,我们有最终数据以获得

  

  获取数据的成功,这就是我们要得到最终的数据结果,最后我想说,这个页面比较简单,和网络源代码,可以看到源的数据,这种方式是GET模式当数据被提交,当采集,一些网络结构比较复杂,并且可能没有数据,我们必须在源代码中提取。关于此解决方案,稍后为您介绍。另外,我在采集这个页面,只需采集@@ķ数据数据的数据数据,这一点,我不解释在这里,只是提示,我们可以使用多线程到所有当前的数据分页采集,通过线程一个采集当前页面的数据,一个翻页动作,你可以采集完成所有的数据。

  我们匹配的数据可能会在项目的实际开发中,需要我们做存储所提取的*敏*感*词*,以便我们将在接下来的数据进行数据。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线