0

0

HTML解析网络爬虫图文介绍

高洛峰

高洛峰

发布时间:2017-03-20 16:48:28

|

2735人浏览过

|

来源于php中文网

原创

一、概述

  曾几时,我还是一个屌丝,一个在校大学生,高中的时候老师就对我们撒了一个慌,说...。人们称它为一个善意的谎言,我却傻傻信以为正。高三的时候努力拼搏了一段时间,可惜命运总是爱作弄人,高考考到了一个二流的大学,从此我告别了家乡,踏上了大学校门,来到了一个鸟不生蛋但会拉屎的地方。刚来大学的时候,大一浑浑噩噩的度过,大门不错,二门不迈,整体呆在宿舍打游戏,打了大半年的游戏,就那样,大学里最美好的日子离我远去。往事不堪回首,过了一年,如今已是学长了,作为一个学长,我不甘落后,于是乎上课努力听讲,下课没事和同学去打球或是去图书馆学习html,css,javascript,java,过着四点一线的生活,在大二一年里拿了两次奖学金。如今,已经是大三...,时间还在流逝,现在还是个屌丝,一个苦逼的大学生,还有事没事喜欢爬各种网站,来满足自己那点小小的虚荣心...。好了,扯淡时间过,该写代码了。

 原谅我那点发自内心的扯淡。下面我们开始进入今天的主题,HTML解析和网络爬虫。

什么是html,网络爬虫?

 什么是html这里就不多说了,那么什么是网络爬虫呢?是不是在网络上怕的虫?哈哈,简直是弱爆了,在前面扯淡的内容中提到了,我喜欢爬各种网站,我爬过我学校的官网和教务管理系统,爬过各种IT网站,做了个简单的新闻客户端。网络爬虫其实是指自动地抓取万维网信息的程序或者脚本,或者说是动态地抓取网站数据的程序。

怎样解析html?

 这里我们通过Java解析html的利器Jsoup解析html,使用jsoup轻松搞定html解析,让你从一个从矮穷挫瞬间变身高大上,高端大气上档次。

为什么要解析html?

 我们都知道现在网络数据传输有三种常用的形式,xmljson(【JSON解析】JSON解析高手)和html,我们的客户端请求服务器,服务器通常给我们返回上面三种形式的数据。同时如果是个人开发,由于没有自己的服务器,那么我们开发的应用程序就可以通过爬别人的网站解析html得到我们要的数据,当然,这种方式得到的数据不推荐,同时也存在太多的局限了,如:受网站的限制,解析困难等等。当然看了这篇文章解析就不是困难了,呵呵。

二、Jsoup和资源准备

jsoup介绍:

 jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

主要功能:

  1. 从一个URL,文件或字符串中解析HTML;

  2. 使用DOM或CSS选择器来查找、取出数据;

  3. 可操作HTML元素属性、文本;

jar包下载(两种方式):

  1. 官网下载最新版:http://jsoup.org/download

  2. jsoup-1.8.3.jar(jar,doc和源码)

jsoup更多信息查看官网:http://jsoup.org

三、HTML解析实战

 新建一个Android项目(编码设为UTF-8),将下载的jsoup的jar包添加到项目的libs目录下,并添加到构建路径中,这里由于不打算开发一个完整的应用,所以用的开发工具是我们更熟悉的xml0,简单点,不用Android Studio(as),用as也一样。

作为测试数据,我们来爬一下这个网站:http://it.ithome.com/

访问这个网站,可以看到现在最新的页面显示如下,当然,它的文章会不断更新,这是写文章的时候的页面(页面的一部分):

HTML解析网络爬虫图文介绍

 我们的任务是把文章的相关信息抓下来,包括:

  1. 文章左边的图片url

  2. 文章的标题article

  3. 文章的内容简介summary

  4. 底部的关键字tags

    立即学习前端免费学习笔记(深入)”;

  5. 右上角的发表时间postime

如下图:

HTML解析网络爬虫图文介绍

OK,确定好了我们要抓取的信息后,我们通过浏览器调试工具xml1打开查看该页面的源码找到我们关心数据的部分:

HTML解析网络爬虫图文介绍

 这个ul里面的li第一个不是我们想要的数据外,其他的每个li中都保存了一篇文章的信息。选择其中两个看看。

HTML解析网络爬虫图文介绍

下面我们可以编写解析代码了。

第一步:新建JavaBean,Article.java

package com.jxust.lt.htmlparse;

/**
 * 文章bean
 * @author lt
 *
 */
public class Article {

    private String title; // 标题
    private String summary; // 文章内容简介
    private String imageUrl; // 图片url
    private String tags; // 关键子
    private String postime; // 发表时间
    
    // setter...
    // getter...
    
    @Override
    public String toString() {
        return "Article [title=" + title + ", summary=" + summary
                + ", imageUrl=" + imageUrl + ", tags=" + tags + ", postime="
                + postime + "]";
    }
}

第二步:新建一个工具类,HtmlParseUtil.java,写一个连接网络并解析返回的html页面的方法:

/**
     * 请求网络加载数据得到文章的集合
     * @param url:网站url
     */
    public static List
getArticles(String url){ List
articles = new ArrayList
(); Connection conn = Jsoup.connect(url); try { // 10秒超时时间,发起get请求,也可以是post Document doc = conn.timeout(10000).get(); // 1. 只要我们关心的信息数据,这里使用css类选择器 Element ul = doc.select(".ulcl").get(0); // 2. 得到所有的li,排除个别不是同种类型的数据 Elements lis = ul.getElementsByTag("li"); for(int i=1;i

 在清单文件下添加请求网络权限:


 说明:请求网络得到Documentxml2后(不要导出包,是jsoup下的),通过select()方法帅选了class为ulcl的ul元素,该页面下只有一个class为ulcl,ul下面第一个li不是我们要的,排除,然后得到每个li对象,每个li元素包含一篇文章的信息,解析重要方法说明:

  1. Document.select(String cssQuery):通过css选择器获取E元素集Elements

  2. Element.getElementsByTag(String tagName):通过标签名称获取元素Elements

  3. Element.getElementsByClass(String className):通过标类选择器获取元素Elements

  4. Element.getElementById(String id):通过id获取元素Element

  5. Element.attr(String attrName):通过属性名获取属性值

  6. Element.text():获取标签元素的文本

 有js的DOM及JQueryxml3经验的人应该很容易理解上面的方法,更多的方法信息使用查看Jsoup官网文档。

第三步:测试解析结果:

Delphi 7应用编程150例 全书内容 CHM版
Delphi 7应用编程150例 全书内容 CHM版

Delphi 7应用编程150例 CHM全书内容下载,全书主要通过150个实例,全面、深入地介绍了用Delphi 7开发应用程序的常用方法和技巧,主要讲解了用Delphi 7进行界面效果处理、图像处理、图形与多媒体开发、系统功能控制、文件处理、网络与数据库开发,以及组件应用等内容。这些实例简单实用、典型性强、功能突出,很多实例使用的技术稍加扩展可以解决同类问题。使用本书最好的方法是通过学习掌握实例中的技术或技巧,然后使用这些技术尝试实现更复杂的功能并应用到更多方面。本书主要针对具有一定Delphi基础知识

下载

使用androidxml4:

  • 在AndroidManxml5est.xml添加instrumentation


  • 在AndroidManifest.xml添加use-library


新建一个测试类HtmlParseTest.javaxml6AndroidTestCase

 写一个测试方法:


    public void testParseHtml(){
        List
articles = HtmlParseUtil.getArticles(url); for(int i=0;i

 这里的url的值为:"http://it.ithome.com/"

打开模拟器运行测试方法 Run As Android JUnit Test

日志输出结果:

这里写图片描述

...

HTML解析网络爬虫图文介绍

可以看到我们得到了20条数据,我们来看看其中的一条

HTML解析网络爬虫图文介绍

 可以看到文章标题,内容简介,图片url,关键字,发表时间5个我们关心的数据全都解析出来了。到这里html解析结束了,现在我们有了数据,那么我们就可以将数据显示在listView中了(这里不会将数据显示在ListView中,这个很简单,一个布局一个适配器就搞定了,不懂的可以问),从而可以自己为网站写个新闻客户端了,把要的数据全都抓取下来,体验一下将别人的数据为我所用的快乐,呵呵。

总结一下:

jsoup解析html的步骤:

  1. 得到Document对象:

  • 通过发送Jsoup的get或者xml7返回Document对象

  • 将html字符串转换成Document对象(通过Jsoup.parse()方法):

  1. 使用Document.select()进行初步筛选数据

  2. 使用Element的一系列方法筛选出我们要的数据

注意:要对照页面源码解析,解析任何数据之前我们都得先知道要解析数据的结构,看着html页面的源码调用Document,Element等对象的相关方法怎么简单怎么解析。

jsoup的get和post请求网络在实际运用中使用不多,通常我会将jsoup和Volley,XUtils,Okhttp等著名的android网络xml8结合使用,即请求网络用Volley等框架,解析用Jsoup,至少我就是这样做的。

相关文章

HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
全国统一发票查询平台入口合集
全国统一发票查询平台入口合集

本专题整合了全国统一发票查询入口地址合集,阅读专题下面的文章了解更多详细入口。

14

2026.02.03

短剧入口地址汇总
短剧入口地址汇总

本专题整合了短剧app推荐平台,阅读专题下面的文章了解更多详细入口。

24

2026.02.03

植物大战僵尸版本入口地址汇总
植物大战僵尸版本入口地址汇总

本专题整合了植物大战僵尸版本入口地址汇总,前往文章中寻找想要的答案。

13

2026.02.03

c语言中/相关合集
c语言中/相关合集

本专题整合了c语言中/的用法、含义解释。阅读专题下面的文章了解更多详细内容。

2

2026.02.03

漫蛙漫画网页版入口与正版在线阅读 漫蛙MANWA官网访问专题
漫蛙漫画网页版入口与正版在线阅读 漫蛙MANWA官网访问专题

本专题围绕漫蛙漫画(Manwa / Manwa2)官网网页版入口进行整理,涵盖漫蛙漫画官方主页访问方式、网页版在线阅读入口、台版正版漫画浏览说明及基础使用指引,帮助用户快速进入漫蛙漫画官网,稳定在线阅读正版漫画内容,避免误入非官方页面。

12

2026.02.03

Yandex官网入口与俄罗斯搜索引擎访问指南 Yandex中文登录与网页版入口
Yandex官网入口与俄罗斯搜索引擎访问指南 Yandex中文登录与网页版入口

本专题汇总了俄罗斯知名搜索引擎 Yandex 的官网入口、免登录访问地址、中文登录方法与网页版使用指南,帮助用户稳定访问 Yandex 官网,并提供一站式入口汇总。无论是登录入口还是在线搜索,用户都能快速获取最新稳定的访问链接与使用指南。

105

2026.02.03

Java 设计模式与重构实践
Java 设计模式与重构实践

本专题专注讲解 Java 中常用的设计模式,包括单例模式、工厂模式、观察者模式、策略模式等,并结合代码重构实践,帮助学习者掌握 如何运用设计模式优化代码结构,提高代码的可读性、可维护性和扩展性。通过具体示例,展示设计模式如何解决实际开发中的复杂问题。

2

2026.02.03

C# 并发与异步编程
C# 并发与异步编程

本专题系统讲解 C# 异步编程与并发控制,重点介绍 async 和 await 关键字、Task 类、线程池管理、并发数据结构、死锁与线程安全问题。通过多个实战项目,帮助学习者掌握 如何在 C# 中编写高效的异步代码,提升应用的并发性能与响应速度。

2

2026.02.03

Python 强化学习与深度Q网络(DQN)
Python 强化学习与深度Q网络(DQN)

本专题深入讲解 Python 在强化学习(Reinforcement Learning)中的应用,重点介绍 深度Q网络(DQN) 及其实现方法,涵盖 Q-learning 算法、深度学习与神经网络的结合、环境模拟与奖励机制设计、探索与利用的平衡等。通过构建一个简单的游戏AI,帮助学习者掌握 如何使用 Python 训练智能体在动态环境中作出决策。

2

2026.02.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.2万人学习

AngularJS教程
AngularJS教程

共24课时 | 3.3万人学习

CSS教程
CSS教程

共754课时 | 26.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号