Jsoup+FastJson制作新闻数据接口-Demo
经常用到 编写出来直接拿来用
这个适合在服务端结合servlet来做接口:需要下载jsoup+fastjson两个包
Jsoup使用手册:http://www.open-open.com/jsoup/selector-syntax.htm
fastJson使用手册:https://www.w3cschool.cn/fastjson/fastjson-ex2.html
在这里我就不重复写了,看官方API最靠谱!
package com.zyzpp.jsoup;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import com.alibaba.fastjson.JSON;
public class JsoupTest {
/**
* Jsoup解析网页实例
*
* @param i(页数)
* @return
*/
public static String getNew(int i) {
String url = "http://www.cnmo.com/news/all_" + i + ".html";
List<NewBean> list_bean = new ArrayList<>();
NewBean newbean;
try {
Document doc = Jsoup.connect(url).get();
// 获取class等于Newcon的div标签
Element contents = doc.select("div.Newcon").first();
Elements content = contents.getElementsByClass("Newcon-list");
for (Element element : content) {
Elements linka = element.getElementsByTag("a");
String linkHref = linka.get(0).attr("href");
String linkText = linka.get(0).text();
Elements linkimg = element.getElementsByTag("img");
String linkSrc = linkimg.get(0).attr("src");
Elements linkp = element.getElementsByTag("p");
String linktxt = linkp.get(0).text();
// 这里把内部类修饰为static所以直接new
newbean = new NewBean(linkText, linktxt, linkSrc, linkHref);
list_bean.add(newbean);
}
// 使用了阿里的fastJson,其它json框架也可以,true是格式化
String json = JSON.toJSONString(list_bean, true);
return json;
} catch (IOException e) {
// e.printStackTrace();
return null;
}
}
/**
*测试方法
*/
public static void main(String[] args) {
System.out.print(getNew(1));
}
public static class NewBean {
private String title;
private String content;
private String imgUrl;
private String urlA;
public NewBean() {
}
public NewBean(String title, String content,
String imgUrl, String urlA) {
super();
this.title = title;
this.content = content;
this.imgUrl = imgUrl;
this.urlA = urlA;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getImgUrl() {
return imgUrl;
}
public void setImgUrl(String imgUrl) {
this.imgUrl = imgUrl;
}
public String getUrlA() {
return urlA;
}
public void setUrlA(String urlA) {
this.urlA = urlA;
}
@Override
public String toString() {
return "NewBean:[title=" + title + ", content=" + content + ", imgUrl=" + imgUrl + "urlA" + urlA + "]";
}
}
}
看着内部类写满了构造方法和getter setter方法,有没有觉得没有必要写了呢?答案是必须写,因为我们使用的是fastJson: 默认的构造函数一定要写,不然是无法解析的。
(对于fastjson 严格按照JavaBean的规范来,有一点不对就无法解析,这里一定要切记,每一个实体类的属性的get , set 方法必须写,且方法第四个字母必须大写,最好使用Eclipse的source->genreal setters and getters 生成get,set 方法,切记,切记 )。对于Gson 这里就没有这么多的要求了,但最好还是按照JavaBean来写,避免一些位置的错误。(参考http://blog.csdn.net/wx_962464/article/details/37612861)
项目到这里就已经可以发布到服务器上了,但是我们在客户端还需要解析json数据,这里可以参考我写的另一篇博客
http://blog.csdn.net/yueshutong123/article/details/78939083
下面我只写一下拿到json字符串之后要做的事:
package com.zyzpp.jsoup;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.zyzpp.jsoup.JsoupTest.NewBean;
public class Demo {
public static void main(String[] args) {
String json = JsoupTest.getNew(1);
List<NewBean> List = JSON.parseArray(json, NewBean.class);
for (NewBean bean : List) {
System.out.println(bean.toString());
}
}
}
这里我说一下fastjson的使用心得:
JSONArray:相当于List
JSONObject:相当于Map
//如果不把内部类修饰为static,这句不好通过:
List<NewBean> List = JSON.parseArray(json, NewBean.class);
下载项目源代码:http://download.csdn.net/download/yueshutong123/10182732
end
Jsoup+FastJson制作新闻数据接口-Demo的更多相关文章
- 菜鸟笔记:node.js+mysql中将JSON数据构建为树(递归制作树状菜单数据接口)
初学Web端开发,今天是第一次将所学做随笔记录,肯定存在多处欠妥,望大家海涵:若有不足,望大家批评指正. 进实验室后分配到的第一个项目,需要制作一个不确定层级树形菜单的数据接口,对于从来没实战编过程的 ...
- Asp.Net Core基于JWT认证的数据接口网关Demo
近日,应一位朋友的邀请写了个Asp.Net Core基于JWT认证的数据接口网关Demo.朋友自己开了个公司,接到的一个升级项目,客户要求用Aps.Net Core做数据网关服务且基于JWT认证实现对 ...
- 开放数据接口 API 简介与使用场景、调用方法
此文章对开放数据接口 API 进行了功能介绍.使用场景介绍以及调用方法的说明,供用户在使用数据接口时参考之用. 在给大家分享的一系列软件开发视频课程中,以及在我们的社区微信群聊天中,都积极地鼓励大家开 ...
- spring boot (二):使用fastJson解析json数据
如果我们想在spring boot中使用第三方的json解析框架: 1)我们需要在pom.xml文件中引入第三方包的依赖; 2)实现方法: 方法1 需要在启动类中继承WebMvcConfigurerA ...
- 基于Thinkphp5+phpQuery 网络爬虫抓取数据接口,统一输出接口数据api
TP5_Splider 一个基于Thinkphp5+phpQuery 网络爬虫抓取数据接口 统一输出接口数据api.适合正在学习Vue,AngularJs框架学习 开发demo,需要接口并保证接口不跨 ...
- App开发:模拟服务器数据接口 - MockApi
为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...
- 关于cordova+vue打包apk文件无法访问数据接口
作为一个cordova小白,我按照官方文档和网上资料完成了讲vue文件打包到cordova中并打包成apk文件,完成了一个简单app的制作,当我正陶醉于可以自己完成一个app的时候突然发现,我的app ...
- Spring使用fastjson处理json数据
1.搭建SpringMVC+spring环境 2.配置web.xml以及springmvc-config.xml,web.xml同Spring使用jackson处理json数据一样,Springmvc ...
- Spring Boot返回json数据及完美使用FastJson解析Json数据
Spring Boot返回json数据 视频地址:http://www.iqiyi.com/w_19rubxzsr5.html 博文参考:https://blog.csdn.net/linxingl ...
随机推荐
- 微信小程序中如何获取for循环的item相关值到JS页面的问题
今天小程序开发过程中,遇到了这个棘手的问题.由于我没有前端基础,只是知道一点儿基本的HTML标签,所以卡了好久,特此分享,望后来的你,可以有所收获. measure step 1 *.WXML: ...
- SQL Server如何定位自定义标量函数被那个SQL调用次数最多浅析
前阵子遇到一个很是棘手的问题,监控系统DPA发现某个自定义标量函数被调用的次数非常高,高到一个离谱的程度.然后在Troubleshooting这个问题的时候,确实遇到了一些问题让我很是纠结,下文是解决 ...
- mssql sqlserver避免sql脚本中出现除零错误的方法分享
摘自:http://www.maomao365.com/?p=6612 摘要:下文介绍sql server中,sql脚本避免出现除零错误的方法分享 在各种业务系统开发中,通常会遇到除零的错误,下文分享 ...
- iOS 让视图UIView 单独显示某一侧的边框线
有时候需要让view显示某一侧的边框线,这时设置layer的border是达不到效果的.在网上查阅资料发现有一个投机取巧的办法,原理是给view的layer再添加一个layer,让这个layer充当边 ...
- burp抓取手机模拟器流量
这里安装的是夜神模拟器,网络模式设置为桥接: 然后从burp suite 导出证书,存为.cer格式.将其导入手机模拟器(我用百度网盘导入的,自带的文件导入,不太会用,找不到放哪了) 然后给手机模拟器 ...
- ELK-elkstack-使用消息队列
日志通过logstash收集到redis,之后从logstash从redis读取数据存入到ES 1. logstash使用redis测试 通过标准输入到redis中 logstash配置与启动 [yu ...
- 【2018.05.11 智能驾驶/汽车电子】非技术向:关于Simulink和AutoSar的几种观点
最近看到几篇关于Simulink及AutoSar的Blog和Paper,感觉比较有意思,转载备忘之. 1. 看衰Simulink及AutoSar From:Tumiz的技术天地 https://blo ...
- CSS鼠标悬浮DIV后显示DIV外的按钮
昨天写样式遇到个问题,如何让鼠标悬浮DIV后,显示DIV外的按钮,可以点击到按钮. 效果如下: 问题: 在DIV hover时候将按钮设为display: block,这是很直接的想法,但是这有个问题 ...
- 《Java大学教程》—第8章 通过继承扩展类
8.2 继承(inheritance):继承是指在类之间共享属性和方法.继承关系是一种层次关系.在继承关系中位于顶部的类称为超类(或基类),位于下面的类称为子类(或派生类).类型转换(type ...
- 自适应:用JS做的自适应,是最差的自适应,记页面刷新前后尺寸变化
今天遇到一个硬茬,我在使用weui重构一个页面时,出现一个问题:路由进入页面时,页面内容尺寸硬是会变大,刷新后又恢复正常: 项目背景:一个使用react-starter-kit构建的B端SPA项目 上 ...