利用Jsoup中的相关方法实现网页中的数据爬去,本例子爬去的网页为比较流行的programmableweb中的mashup描述内容,然后为数据库中存在的mashup添加相应的描述。

 package com.test;

 import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import com.bean.mashup_tags_apis;
import com.daoImpl.MashupDaoImpl; public class JsoupTest { /**
* @param args
*/
public static void main(String[] args) { List<String> mashupName = new ArrayList<String>();
List<String> mashupDescription = new ArrayList<String>();
MashupDaoImpl mashupDaoImpl = new MashupDaoImpl();
List<mashup_tags_apis> mashup_tags_apis = mashupDaoImpl
.findAllmashup_tags_apis(); try { // 获取网页内容,从第二页开始,第1页特殊处理
for (int p = 220; p < 365; p++) {
System.out.println("正在爬取第" + p + "个页面........");
org.jsoup.nodes.Document doc = Jsoup.connect("http://www.programmableweb.com/mashups/directory/"
+ p).get(); // 通过ID获得需要的表格
Element content = doc.getElementById("mashups"); // 按照[href*=/mashup/]取得数据
Elements name = content.select("[href*=/mashup/]"); // 踢出版本信息
String RegexMatcher = "[\\d.]+"; // 向mashupName集合中添加名字
for (int i = 0; i < name.size(); i++) {
String Name = name.get(i).text();
if (name.get(i).hasText() && !Name.matches(RegexMatcher)) { mashupName.add(Name);
}
} // 取得描述信息
Elements description = content.getElementsByTag("p");
// 向mashupDescription集合中添加描述信息
for (Element descri : description) {
String Comment = descri.text();
if (p == 1) {
// 第一页处理方式(名字和描述都为空)
if (Comment != null && Comment.length() > 2) {
if (Comment != null) {
mashupDescription.add(Comment);
}
}
} else {
// 从第二页开始处理方式,描述为空用NoDescriptions占位
if (Comment == null) {
Comment = "NoDescriptions";
}
mashupDescription.add(Comment);
} } // 更新数据库
for (int i = 0; i < mashupName.size(); i++) {
String Name = mashupName.get(i);
for (int j = 0; j < mashup_tags_apis.size(); j++) {
if (Name.equals(mashup_tags_apis.get(j).getName())) {
String destrcipString = mashupDescription.get(i);
if (Name != null && destrcipString != null) {
if (!mashupDaoImpl.updateMashup_tags_apis(
destrcipString, Name)) {
System.out.println("更新失败!");
}
}
}
}
} // 清空集合爬取下一个页面
mashupDescription.clear();
mashupName.clear();
System.out.println("第---------" + p + "---------个页面完成!\n");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // 显示输出查看是否正确
// for (int i = 0; i < mashupName.size(); i++) {
// System.out.println((i + 1) + " " + mashupName.get(i));
// }
//
// for (int j = 0; j < mashupDescription.size(); j++) {
// System.out.println((j + 1) + " " + mashupDescription.get(j));
// }
System.out.println("恭喜您,描述添加成功!");
}
}

这也是我第一次是使用Jsoup,还是有很多东西等待自己慢慢发现......

Jsoup的简单的使用示例的更多相关文章

  1. unity Dotween插件的简单介绍及示例代码

    unity里面做插值动画的插件有许多,比较常见的有itween.hotween.dotween.根据大家的反馈和实际体验来说,dotween插件在灵活性.稳定性.易用性上都十分突出.这里简单介绍下它的 ...

  2. [MySQL5.6] 一个简单的optimizer_trace示例

    [MySQL5.6] 一个简单的optimizer_trace示例   前面已经介绍了如何使用和配置MySQL5.6中optimizer_trace(点击博客),本篇我们以一个相对简单的例子来跟踪op ...

  3. Skinned Mesh原理解析和一个最简单的实现示例

    Skinned Mesh 原理解析和一个最简单的实现示例   作者:n5 Email: happyfirecn##yahoo.com.cn Blog: http://blog.csdn.net/n5 ...

  4. MongoDB下Map-Reduce使用简单翻译及示例

    目录 Map-Reduce JavaScript 函数 Map-Reduce 行为 一个简单的测试 原文地址https://docs.mongodb.com/manual/core/map-reduc ...

  5. sqlalchemy(二)简单的连接示例

    # -*- coding: utf-8 -*- import sqlalchemy from sqlalchemy import create_engine from sqlalchemy.ext.d ...

  6. Python正则表达式的简单应用和示例演示

    前一阵子小编给大家连续分享了十篇关于Python正则表达式基础的文章,感兴趣的小伙伴可以点击链接进去查看.今天小编给大家分享的是Python正则表达式的简单应用和示例演示,将前面学习的Python正则 ...

  7. 一个简单的CSS示例

    1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5 & ...

  8. Java程序中使用 Jsoup 爬虫( 简单示例 )

    一.maven项目里pom添加jsoup依赖 <dependency> <groupId>org.jsoup</groupId> <artifactId> ...

  9. jsoup获取文档类示例

    import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsou ...

随机推荐

  1. jQuery顺序加载图片(终版)

    这一篇是对上一篇(jQuery顺序加载图片(初版)--http://www.cnblogs.com/newbie-cc/p/3707504.html)的改进. function loadImage(i ...

  2. 卸载pycharm再重新安装后,找不到第三方库

    遇到的问题: 看到pycharm出了新的版本,手痒把旧的版本卸载,然后安装了最新的版本,然后问题就来了. 之前通过PIP命令安装的第三方库,import的时候都报错,找不到模块.既然以前能正常使用,现 ...

  3. windows控制台(console)乱码

    在cmd中输入 CHCP 65001,实操有效.记录一下 永久设置,代码如下: Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Cons ...

  4. python 字符串模糊匹配 Fuzzywuzzy

    Python提供fuzzywuzzy模块,不仅可用于计算两个字符串之间的相似度,而且还提供排序接口能从大量候选集中找到最相似的句子. (1)安装 pip install fuzzywuzzy (2)接 ...

  5. luogu P1856 [USACO5.5]矩形周长Picture 扫描线 + 线段树

    Code: #include<bits/stdc++.h> #define maxn 200007 #define inf 100005 using namespace std; void ...

  6. Codeforces Round #548 (Div. 2) A. Even Substrings

    You are given a string 

  7. Oralce导入数据库出现某一列的值太大

    这是由于导出的文件所运行的Oracle,和导入所运行的Oracle机器字符集不相同导致的,在UTF-8中有的汉字占三个字节, 并不是所有的都占两个字节,

  8. Q&A to prepare interview of HSBC

    1.How do you keep updating lastest IT knowledge? 1).keep an eye on current project technology evetho ...

  9. STM32 HAL库的定时器中断回调函数跟串口中断回调函数

    void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { //添加回调后的程序逻辑 if (htim->Instance == ...

  10. raize5的修改。

    ( ( ; Col1: $; Col2: $; Col3: $; Col4: $ ), ( ; Col1: $; Col2: $FA; Col3: $; Col4: $ ), ( ; Col1: $C ...