使用Jsoup帮助解析具有html标签的数据和解析网页
下载Jsoup包后导入
/**
* Created by YGW on 2016/4/17.
* 显示公告的详细内容
*/
public class
PressFragment extends Fragment{
@Override
public View onCreateView (LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View view=inflater.inflate (R.layout.ygw_announcement_item_specific,
null);
String content=getArguments ().getString
("content");
String title=getArguments ().getString
("title");
String time=getArguments ().getString ("time");
String apartment=getArguments ().getString ("apartment");
TextView tv_PressTitle=(TextView)view.findViewById
(R.id.PressTitle_item);
TextView
tv_PressContent=(TextView)view.findViewById (R.id.PressContent_Item);
tv_PressTitle.setText (Gonggaohtml(title));
tv_PressContent.setText (Gonggaohtml(content));
return view;
}
//
使用Jsoup解析,这里解决的为题是,解析<p>标签,把数据转化成String类型的
private String
Gonggaohtml(String html) {
Document doc = Jsoup.parse
(html);
Elements ps = doc.getElementsByTag ("p");
String
content = "";
for(Element p : ps) {
content = content
+ p.text ();
}
return content;
}
}
解析网页
下载Jsoup包后导入
/**
* Created by YGW on 2016/4/17.
* 显示公告的详细内容
*/
public class
PressFragment extends Fragment{
@Override
public View onCreateView (LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View view=inflater.inflate (R.layout.ygw_announcement_item_specific,
null);
String content=getArguments ().getString
("content");
String title=getArguments ().getString
("title");
String time=getArguments ().getString ("time");
String apartment=getArguments ().getString ("apartment");
TextView tv_PressTitle=(TextView)view.findViewById
(R.id.PressTitle_item);
TextView
tv_PressContent=(TextView)view.findViewById (R.id.PressContent_Item);
tv_PressTitle.setText (Gonggaohtml(title));
tv_PressContent.setText (Gonggaohtml(content));
return view;
}
//
使用Jsoup解析,这里解决的为题是,解析<p>标签,把数据转化成String类型的
private String
Gonggaohtml(String html) {
Document doc = Jsoup.parse
(html);
Elements ps = doc.getElementsByTag ("p");
String
content = "";
for(Element p : ps) {
content = content
+ p.text ();
}
return content;
}
}
解析网页
public class MainActivity extends AppCompatActivity {
private String url = "http://解析网页的Url";
private Handler handler;
private List<String> list_title;
private List<String> list_content;
private ListView lv_press;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
lv_press=(ListView)findViewById (R.id.lv_press);
new Thread(new Runnable() {
@Override
public void run() {
parseHtml();
}
}).start ();
list_title = new ArrayList<String> ();
list_content= new ArrayList<String> ();
handler = new Handler (){
@Override
public void handleMessage (Message msg) {
super.handleMessage (msg);
if (msg.what == 0x123){
String title_value=msg.getData ().getString ("title_key");
String href_value=msg.getData ().getString ("href_key");
list_title.add (title_value);
list_content.add (href_value);
Log.i ("info", title_value + ":" + href_value);
// Log.i ("info", list_title.toString () + ":" + href_value);
lv_press.setAdapter (new PressListView (list_title,list_content, MainActivity.this));
}
}
};
lv_press.setOnItemClickListener (new AdapterView.OnItemClickListener () {
@Override
public void onItemClick (AdapterView<?> parent, View view, int position, long id) {
String path=list_content.get (position);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse (path));
startActivity(intent);
}
});
}
protected void parseHtml() {
try {
Document doc = Jsoup.connect(url).get();
Elements elements = doc.select("div.unit");//解析这个大布局里的div布局名unit
for (Element ele : elements) {
String title = ele.getElementsByTag("h1").first().text();//解析所有h1标签
String href = ele.getElementsByTag("a").first().attr("href");//所有href标签
Log.i ("info","-----------------"+href);
if (!title.isEmpty ()){
Message msg= new Message ();
msg.what=0x123;
Bundle bundle = new Bundle ();
bundle.putString ("title_key",title);
bundle.putString ("href_key", href);
msg.setData (bundle);
handler.sendMessage (msg);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
使用Jsoup帮助解析具有html标签的数据和解析网页的更多相关文章
- android基础---->JSON数据的解析
上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...
- 网站seo优化--jsoup 批量分析相关网站 标签,描述,关键词.
网站seo优化--jsoup 批量分析相关网站 标签,描述,关键词. 因为自己写了一个磁力搜索网站Btgoogle,准备进行优化一下,需要分析其他的网站的优化情况. Java的Jsoup类库和PHP的 ...
- <script>标签的加载解析执行
转自原文 <script>标签的加载解析执行 看了很多网上的文章,都是大同小异.总结一下.内部原理还没有搞清楚,有机会再学习. 一.<script>标签的加载解析执行顺序 ht ...
- 【python小随笔】python 解析xml数据的新手大坑>>抓取多重标签,遍历各标签的数据
xml文档: <GetMatchingProductResult ASIN="B071LF9R6G" status="Success">...< ...
- golang中的反射解析结构体标签tag
package main import ( "fmt" "reflect" ) type resume struct { // 反射解析结构体标签tag Nam ...
- iOS开发网络篇—XML数据的解析
iOS开发网络篇—XML数据的解析 iOS开发网络篇—XML介绍 一.XML简单介绍 XML:全称是Extensible Markup Language,译作“可扩展标记语言” 跟JSON一样,也是 ...
- Struts2第十一篇【简单UI标签、数据回显】
Struts2UI标签 Sturts2为了简化我们的开发,也为我们提供了UI标签-也就是显示页面的标签-.. 但是呢,Struts2是服务端的框架,因此使用页面的标签是需要在服务器端解析然后再被浏览器 ...
- Struts2【UI标签、数据回显、资源国际化】
Struts2UI标签 Sturts2为了简化我们的开发,也为我们提供了UI标签...也就是显示页面的标签..... 但是呢,Struts2是服务端的框架,因此使用页面的标签是需要在服务器端解析然后再 ...
- android基础---->XMl数据的解析
在网络上传输数据时最常用的格式有两种,XML和JSON,下面首先学一下如何解析XML格式的数据,JSON的解析可以参见我的博客(android基础---->JSON数据的解析).解析XML 格式 ...
随机推荐
- (Java)《head first java》值得Java或面向对象基础的新手看。
看完这本书后本人收获良多. 内容对Java以及面向对象的入门者非常友好. 抽象的内容惯用图解的方法来剖析,通俗易懂 之前看C#入门经典的面向对象时,依然浓浓的一头雾水. (1)很不解为何实例化要写成A ...
- App是什么,可以分为几类?及其相关解释。
App,是应用程序,Application的缩写,事实上,严格说来,目前市面上的APP大致可分为以下十类,即移动UGC,移动搜索,移动浏览,移动支付,移动广告,移动即时信息,SNS,LBS,AR以及 ...
- NOR型flash与NAND型flash的区别
1) 闪存芯片读写的基本单位不同 应用程序对NOR芯片操作以“字”为基本单位.为了方便对大容量NOR闪存的管理,通常将NOR闪存分成大小为128KB或者64KB的逻辑块,有时候块内还分成扇区.读写时 ...
- PHP基本语法的小结
一.PHP能做什么? PHP能做什么?我觉得它很强大,只要我能想到的,它都能做,只是我技术能力还不行╮(╯﹏╰)╭.好吧,一张图,基本了解一下吧(ps:PHP的功能不局限于此( ^_^ )) 图像有点 ...
- 更新yum到 163
cdh4 yum安装; http://www.cloudera.com/content/support/en/documentation/cdh4-documentation/cdh4-documen ...
- Getty – Java NIO 框架设计与实现
前言 Getty是我为了学习 Java NIO 所写的一个 NIO 框架,实现过程中参考了 Netty 的设计,同时使用 Groovy 来实现.虽然只是玩具,但是麻雀虽小,五脏俱全,在实现过程中,不仅 ...
- 如何为可扩展系统进行Java Socket编程
从简单I/O到异步非阻塞channel的Java Socket模型演变之旅 上世纪九十年代后期,我在一家在线视频游戏工资工作,在哪里我主要的工作就是编写Unix Unix Berkley Socket ...
- sublime text2注册码
----- BEGIN LICENSE ----- Andrew Weber Single User License EA7E-855605 813A03DD 5E4AD9E6 6C0EEB94 BC ...
- Java网络编程(TCP客户端)
TCP传输:两个端点建立连接后会有一个传输数据的通道,这个通道就称为流,而且是建立在网络基础上的流,之为socket流,该流中既可以读取也可以写入. TCP的两个端点:一个客户端:ServerSock ...
- hdoj 2050 折线分割平面
折线分割平面 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...