Android利用jsoup抓取网页数据

今天写了一个通过jsoup抓取网页的内容的例子。jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
用学校网页做例子,把首页的新闻的信息抓取出来,放到客户端的列表中。


网页的html代码如下:
<table class="table table-condensed">
   <tr><td style="padding-right:0px">
   <a href="info/1103/16916.htm" target="_blank" title="纪律教育学习月启动 首次学习围绕党纪党规展开" class="my-panel-item">纪律教育学习月启动 首次学习围绕党纪党规展开</a>
   </td>
      <td align="right" class="my-panel-item-date" style="padding-left:0px;padding-top:8px">09-07 </td></tr>
   <tr><td style="padding-right:0px">
   <a href="info/1103/16915.htm" target="_blank" title="学校要求加快科技园肇梦空间建设进度" class="my-panel-item">学校要求加快科技园肇梦空间建设进度</a>
   </td>
      <td align="right" class="my-panel-item-date" style="padding-left:0px;padding-top:8px">09-06 </td></tr>
   <tr><td style="padding-right:0px">
   <a href="info/1103/16909.htm" target="_blank" title="我校新增3项国家基金项目 资助金额59万元" class="my-panel-item">我校新增3项国家基金项目 资助金额59万元</a>
   </td>
      <td align="right" class="my-panel-item-date" style="padding-left:0px;padding-top:8px">09-05 </td></tr>
   <tr><td style="padding-right:0px">
   <a href="info/1103/16906.htm" target="_blank" title="本网评论:做好换届选举工作 落实根本政治制度" class="my-panel-item">本网评论:做好换届选举工作 落实根本政治制度</a>
   </td>
      <td align="right" class="my-panel-item-date" style="padding-left:0px;padding-top:8px">09-02 </td></tr>
   <tr><td style="padding-right:0px">
   <a href="info/1103/16908.htm" target="_blank" title="科技园肇梦众创空间分别获得国家级省级名片" class="my-panel-item">科技园肇梦众创空间分别获得国家级省级名片</a>
   </td>
      <td align="right" class="my-panel-item-date" style="padding-left:0px;padding-top:8px">09-02 </td></tr>
   <tr><td style="padding-right:0px">
   <a href="info/1103/16902.htm" target="_blank" title="省厅督查开学工作 给予我校充分肯定" class="my-panel-item">省厅督查开学工作 给予我校充分肯定</a>
   </td>
      <td align="right" class="my-panel-item-date" style="padding-left:0px;padding-top:8px">09-01 </td></tr>
   <tr><td style="padding-right:0px">
   <a href="info/1103/16897.htm" target="_blank" title="党委书记校长分别主讲新学期第一堂思政课" class="my-panel-item">党委书记校长分别主讲新学期第一堂思政课</a>
   </td>
      <td align="right" class="my-panel-item-date" style="padding-left:0px;padding-top:8px">09-01 </td></tr>
   <tr><td style="padding-right:0px">
   <a href="info/1103/16901.htm" target="_blank" title="我校科研项目喜获中央财政支持专项资金700万元" class="my-panel-item">我校科研项目喜获中央财政支持专项资金700万元</a>
   </td>
      <td align="right" class="my-panel-item-date" style="padding-left:0px;padding-top:8px">09-01 </td></tr>
   <tr><td style="padding-right:0px">
   <a href="info/1103/16896.htm" target="_blank" title="我校召开中层干部会议 明确迎评为本学期中心工作" class="my-panel-item">我校召开中层干部会议 明确迎评为本学期中心工作</a>
   </td>
      <td align="right" class="my-panel-item-date" style="padding-left:0px;padding-top:8px">09-01 </td></tr>
</table>


因为没有新闻图片,我就只抓取了新闻的链接、标题和日期,下面就是抓取的代码:


public List<News> getData(String url){
List<News> newsList = new ArrayList<>();
Document document = null;
try {
document =  Jsoup.connect(url).get();
} catch (IOException e) {
e.printStackTrace();
}
// 获取目标HTML代码
Elements item = document.select("[class=table table-condensed]");
int total = 0;
for(int i = 0; i < item.size(); i++){
if(i != 2){
Elements href = item.get(i).select("a");
Elements td = item.select("td");
if(i == 3){
total ++;
}
for(int j = 0; j < href.size(); j ++){
News news = new News();

String uri = href.get(j).attr("href");
String title = href.get(j).attr("title");
String date = td.get(total*2+1).text();

news.setTitie(title);
news.setUrl(uri);
news.setDate(date);

newsList.add(news);
total ++;
}
}
}
return  newsList;
}


主要解释的代码是获取html的代码:
Elements item = document.select("[class=table table-condensed]")是解析table的class,class的名称要完全一样,有空格也要打进去
然后遍历整个网页的所有这个table,为什么我这里i!=2,是因为学校的网页的第三个table不是新闻链接,只是两个普通链接,所以我这里要去掉
Elements href = item.get(i).select("a") 这是获取table里面的<a>标签,然后既可以根据获取到的数据获取里面的属性值了,就是下面这段代码了


最后获取到效果图如下,点击列表的item可以进入新闻的详情页。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Jsoup抓取携程旅游网的数据头歌可以通过以下步骤实现: 1. 导入Jsoup库:首先需要在项目中导入Jsoup库,可以通过在项目的依赖中添加Jsoup的Maven依赖或者手动将Jsoup库导入到项目中。 2. 创建连接:使用Jsoup库中的`connect()`方法创建一个与携程旅游网连接的对象。例如,可以使用以下代码创建一个与携程旅游网首页连接的对象: ```java String url = "https://www.ctrip.com/"; Connection connection = Jsoup.connect(url); ``` 3. 发送请求并获取HTML内容:使用连接对象的`get()`方法发送请求并获取携程旅游网的HTML内容。例如,可以使用以下代码发送请求并获取HTML内容: ```java Document document = connection.get(); ``` 4. 解析HTML内容:使用Jsoup库中提供的方法解析HTML内容,获取到所需的数据。例如,可以使用以下代码获取携程旅游网首页的标题: ```java String title = document.title(); ``` 5. 提取数据:根据需要,使用Jsoup提供的选择器、过滤器等方法提取页面中的特定数据。例如,可以使用以下代码提取携程旅游网首页的所有图片链接: ```java Elements imgElements = document.select("img"); for (Element imgElement : imgElements) { String imgUrl = imgElement.attr("src"); // 进一步处理图片链接... } ``` 以上是简单的示例,通过以上步骤可以使用Jsoup抓取携程旅游网的数据。根据具体的需求和页面结构,可以使用更多的Jsoup方法来提取所需的数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值