Android Jsoup:实现 HTML 解析和 Epub 解析,论程序员成长的正确姿势
.timeout(3000).post();
} catch (IOException e) {
e.printStackTrace();
}
// 若根目录有个 index.html 文件,否则程序会 crash
File input = new File(Environment.getExternalStorageDirectory()
"/index.html");
try {
Document doc4 = Jsoup.parse(input, "utf-8", "http://baidu.com");
} catch (IOException e) {
e.printStackTrace();
}
// ../baidu.png -> http://baidu.com/baidu.png
}
}
示例 2:使用 Jsoup 解析 HTML 新闻列表
新闻地址是:http://mobile.csdn.net/
![](https://static001.geekbang.org/infoq/14/1470c181453b15cde068c1962c13753a.png)
<div class="unit">
<h1><a href="http://www.csdn.net/article/2015-11-02/2826103-jinjiang-beecloud" target="_blank">《近匠》BeeCloud 创始人黄君贤:三行代码集成支付的技术实现</a></h1>
<h4>发表于<span class="ago">2015-11-03 18:18</span>|<span class="view_time">4471 次阅读</span>|<span class="num_recom">11 条评论</span></h4>
<dl>
<dt>
<a href="http://www.csdn.net/article/2015-11-02/2826103-jinjiang-beecloud" target="_blank"><img src="http://img.ptcms.csdn.net/article/201511/03/5638562e9dde2_thumb.jpg" alt="" /></a>
</dt>
<dd>
《近匠》第 106 期:成立于 2014 年的 BeeCloud 专注于支付云服务,以“让支付更简单”为理念,为开发者及企业提供一站式支付解决方案。其推出的“秒支付 Button”无需 SDK,三行代码即可一键接入支付功能。
</dd>
</dl>
<div class="tag">
<a href="http://www.csdn.net/tag/%E8%BF%91%E5%8C%A0/news" target="_blank">近匠</a>
<a href="http://www.csdn.net/tag/beecloud/news" target="_blank">BeeCloud</a>
<a href="http://www.csdn.net/tag/google/news" target="_blank">Google</a>
<a href="http://www.csdn.net/tag/%E9%BB%84%E5%90%9B%E8%B4%A4/news" target="_blank">黄君贤</a>
<a href="http://www.csdn.net/tag/%E6%94%AF%E4%BB%98/news" target="_blank">支付</a>
<a href="http://www.csdn.net/tag/sdk/news" target="_blank">SDK</a>
</div>
</div>
<div class="unit">
<h1><a href="http://www.csdn.net/article/2015-11-03/2826114" target="_blank">专访贾磊:百度语音实现技术创新,打破汉语语音识别领域壁垒</a></h1>
<h4>发表于<span class="ago">2015-11-03 14:58</span>|<span class="view_time">186 次阅读</span>|<span class="num_recom">1 条评论</span></h4>
<dl>
<dt>
<a href="http://www.csdn.net/article/2015-11-03/2826114" target="_blank"><img src="http://img.ptcms.csdn.net/article/201511/03/563858fcac8a2_thumb.jpg" alt="" /></a>
</dt>
<dd>
语音识别技术正处于大规模爆发边缘,更多终端会进入语音操作时代。近日百度在汉语语音识别方面获得重大理论和产品突破,CSDN 对百度语音技术部负责人贾磊进行了专访,他分享了这次技术突破的理论基础和学术意义。
</dd>
</dl>
<div class="tag">
<a href="http://www.csdn.net/tag/%E5%A4%A7%E6%95%B0%E6%8D%AE/news" target="_blank">大数据</a>
<a href="http://www.csdn.net/tag/%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB/news" target="_blank">语音识别</a>
<a href="http://www.csdn.net/tag/%E4%B8%93%E8%AE%BF/news" target="_blank">专访</a>
<a href="http://www.csdn.net/tag/%E7%99%BE%E5%BA%A6/news" target="_blank">百度</a>
<a href="http://www.csdn.net/tag/%E6%8A%80%E6%9C%AF/news" target="_blank">技术</a>
<a href="http://www.csdn.net/tag/%E8%AF%AD%E9%9F%B3%E6%90%9C%E7%B4%A2/news" target="_blank">语音搜索</a>
<a href="http://www.csdn.net/tag/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/news" target="_blank">机器学习</a>
<a href="http://www.csdn.net/tag/%E4%BA%BA%E6%9C%BA%E4%BA%A4%E4%BA%92/news" target="_blank">人机交互</a>
<a href="http://www.csdn.net/tag/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/news" target="_blank">深度学习</a>
</div>
</div>
<div class="unit">
<h1><a href="http://www.csdn.net/article/2015-11-03/2826110-CTO" target="_blank">【CTO 讲堂】Growth Hacking 背后,数据分析平台的架构调整</a></h1>
<h4>发表于<span class="ago">2015-11-03 11:05</span>|<span class="view_time">949 次阅读</span>|<span class="num_recom">6 条评论</span></h4>
<dl>
<dt>
<a href="http://www.csdn.net/article/2015-11-03/2826110-CTO" target="_blank"><img src="http://img.ptcms.csdn.net/article/201511/03/56382497a487e_thumb.jpg" alt="" /></a>
</dt>
<dd>
Growth Hacking 概念越来越火,很多创业团队把这个为 Facebook、Airbnb 等公司带来巨大用户增量的概念奉为圣经。与数据分析的关系是怎样的?现有的数据分析架构为什么不能支持需求?本文为诸葛 io 创始人 &CEO 孔淼的分享。
</dd>
</dl>
<div class="tag">
<a href="http://www.csdn.net/tag/cto%E4%BF%B1%E4%B9%90%E9%83%A8/news" target="_blank">CTO 俱乐部</a>
<a href="http://www.csdn.net/tag/cto/news" target="_blank">CTO</a>
<a href="http://www.csdn.net/tag/cto%E8%AE%B2%E5%A0%82/news" target="_blank">CTO 讲堂</a>
<a href=
"http://www.csdn.net/tag/growth%20hacking/news" target="_blank">Growth Hacking</a>
<a href="http://www.csdn.net/tag/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/news" target="_blank">数据分析</a>
</div>
</div>
<div class="unit">
...
分析可知,每个条新闻 item 都在下面这个标签中
<div class="unit"> ... </div>
在安卓中解析的代码如下:
public class MainActivity extends Activity {
private String url = "http://mobile.csdn.net/";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new Runnable() {
@Override
public void run() {
parseHtml();
}
}).start();
}
private void parseHtml() {
try {
Document doc = Jsoup.connect(url).get();
Elements elements = doc.select("div.unit");
for (Element ele : elements) {
String title = ele.getElementsByTag("h1").first().text();
String href = ele.getElementsByTag("h1").first()
.getElementsByTag("a").first().attr("href");
// logcat 中打印出“新闻标题+链接地址”
Log.i("info", title + ":" + href);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
评论