整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

如何用JAVA 写一个简单爬虫

如何用JAVA 写一个简单爬虫

了编写一个Java爬虫,你需要了解以下几个步骤:

  1. 首先,你需要确定你要抓取的网站。可以从浏览器中复制网站的URL并粘贴到你的Java代码中。
  2. 接下来,你需要使用Java的网络编程API连接到该网站。你可以使用URLConnection或HttpClient等库。
  3. 一旦你建立了一个连接,你就可以开始读取网页内容。你可以使用Java的IO库读取网页。
  4. 在读取网页内容之后,你需要解析网页以提取所需的信息。这可以使用Java的解析器,如Jsoup或XML解析器。
  5. 最后,你需要存储或使用所提取的信息。你可以将信息保存到数据库中,将其输出到文件中,或将其用于其他用途。

下面是一个基本的Java爬虫代码示例,它使用Jsoup解析器和URLConnection库连接到目标网站并提取标题和链接信息:

import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Scanner;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class SimpleWebCrawler {
  
  public static void main(String[] args) {
    String url="https://www.example.com/";
    try {
      URLConnection conn=new URL(url).openConnection();
      conn.addRequestProperty("User-Agent", "Mozilla/5.0");
      Scanner scanner=new Scanner(conn.getInputStream());
      String html=scanner.useDelimiter("\\Z").next();
      scanner.close();
      Document doc=Jsoup.parse(html);
      Elements links=doc.select("a[href]");
      for (Element link : links) {
        System.out.println(link.attr("href") + " - " + link.text());
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Jsoup

Jsoup是一款用于解析HTML和XML文档的Java库。它提供了类似于jQuery的语法来操作文档,使得解析和处理文档变得非常简单。

以下是Jsoup解析器的一些常用功能:

  1. 解析HTML文档:使用Jsoup可以轻松解析HTML文档,并且可以处理各种标签、属性、文本内容等。
  2. 获取元素:可以使用类似于jQuery的选择器语法来获取HTML文档中的元素,例如获取所有的链接、图片等。
  3. 修改元素:可以使用Jsoup修改HTML文档中的元素,例如修改元素的属性、添加或删除元素等。
  4. 过滤HTML文档:可以使用Jsoup过滤HTML文档中的不必要的元素,例如过滤掉广告、统计代码等。
  5. 处理字符编码:可以使用Jsoup来处理HTML文档中的字符编码,例如将文档中的ISO-8859-1编码转换为UTF-8编码等。
  6. 支持HTTPS:Jsoup还支持使用HTTPS协议获取HTML文档,可以使用它来爬取一些需要登录才能访问的网站。

总之,Jsoup是一款非常实用的HTML和XML解析器,可以帮助Java开发者快速、简单地解析和处理HTML文档,使得爬虫开发变得更加容易。

Jsoup的使用

使用Jsoup解析器需要先将其添加到项目的依赖中。可以通过Maven或者Gradle来添加依赖。

例如,使用Maven添加Jsoup的依赖:

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.14.3</version>
</dependency>

添加依赖之后,就可以在Java代码中使用Jsoup了。以下是使用Jsoup解析器获取HTML文档中所有链接的示例代码:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupExample {
    public static void main(String[] args) {
        String html="<html><head><title>Jsoup Example</title></head>"
                + "<body><p>Jsoup is a Java library for working with real-world HTML.</p>"
                + "<a href=\"http://example.com\">Example</a></body></html>";

        Document doc=Jsoup.parse(html); // 将HTML字符串解析为文档对象

        Elements links=doc.select("a"); // 获取所有的链接元素

        for (Element link : links) {
            String href=link.attr("href"); // 获取链接的URL地址
            String text=link.text(); // 获取链接的文本内容
            System.out.println(href + ": " + text);
        }
    }
}

以上代码使用Jsoup将HTML字符串解析为文档对象,然后使用选择器语法获取所有的链接元素,并输出它们的URL地址和文本内容。

除此之外,Jsoup还有很多其他的功能,例如修改元素、过滤HTML文档等等,可以根据具体需求灵活运用。

Jsoup 解析器的常见功能和代码片段示例

1.获取网页的 Title:

Document doc=Jsoup.connect("http://example.com/").get();
String title=doc.title();

2.获取指定标签的文本内容:

Element element=doc.select("div.content").first();
String text=element.text();

3.获取指定属性的值:

Element element=doc.select("img").first();
String src=element.attr("src");

4.过滤 HTML 标签:

String html="<p>这是一段 <b>加粗</b> 的文本。</p>";
String text=Jsoup.parse(html).text();

5.修改 HTML 内容:

Element element=doc.select("div.content").first();
element.append("<p>这是新增的文本内容。</p>");

6.提取网页中的链接:

Elements links=doc.select("a[href]");
for (Element link : links) {
    String href=link.attr("href");
    System.out.println(href);
}

7.提取网页中的图片:

Elements imgs=doc.select("img[src~=(?i)\\.(png|jpe?g|gif)]");
for (Element img : imgs) {
    String src=img.attr("src");
    System.out.println(src);
}

这些只是 Jsoup 解析器的常见用法之一。Jsoup 还有更多的功能,如解析 XML、处理表单、处理 Cookie 等,大家可以自己去了解!

有不足之处大家也可以在评论区指出!

低版本安卓中对TextView加载html所支持的标签不够多,比如在搭载了android 5.1的手机上我们的app调用了Html.froml为TextView设置文本时,当source包含span标签时不会处理,高版本则会去处理;

对比下高低版本的Html.java如下:

android api level 22


android api level 28


我们发现,高版本是支持span标签的,那低版本怎么处理呢?我们看到方法handleStartTag

中在不支持的标签都会回调一个方法:


所以我们只需要传入自定义的TagHandler就可以处理Html.java不支持的标签了。

一开始我们为TextView设置文本时这样写:

String text="创建<span style='color: #ff8500;'>7</span>天,累计消费<span style='color: #ff8500;'>15</span>元";
textview.setText(Html.fromHtml(text));

高版本手机正常加载span标签,低版本的手机效果如下:

更改后这样写:

String text="创建<span style='color: #ff8500;'>7</span>天,累计消费<span style='color: #ff8500;'>15</span>元";
textview.setText(Html.fromHtml(text,null,new CustomTagHandler()));

更改后在低版本效果如下:

CustomTagHandler的实现参考高版本的Html.java,完整代码如下:

馨提示:细读本文需要2分钟,速读仅需1分钟。

作者|李娜

*本文为「Java联盟」原创内容,转载无需授权,请保留署名来源。

前言

上一节我们讲到HTML是什么,一个网页的基本架构是怎么样子。但是往往一个网页有很多标签,分别代表不同的含义,当然如果你不懂的话何谈编辑呢?所以这一节,开始讲到HTML中的那些常见标签。

第二节 HTML 中的常见标签

首先我们先来了解一下 HTML 标签的类型:

HTML 标记标签通常被称为 HTML 标签(HTML TAG)。

1

单标签与双标签

单标签:单个标签标记名称

无属性值: 如: br / (表示换行)

有属性值: 如: hr width=80% / (表示水平线的宽占参照物的百分之八十)

双标签:两个标签,成对出现。

无属性值: 标记名称.../标记名称

如: title.../title

有属性值: 标记名称 属性=属性值.../标记名称

如:fontsize7.../font

注意:

标签的属性与属性之间以空格分隔,属性不区分先后顺序,且属性不是必需要写的。

然后我们来了解下标题标签。

2

标题标签

标题标签:hx/hx

其中“x”是1~6的数字代表字体的大小

如下就是标题标签

h1我是标题1/h1

h2我是标题2/h2

h3我是标题3/h3

h4我是标题4/h4

h5我是标题5/h5

h6我是标题6/h6

执行实际效果图如下:

一般一篇文章只会使用一个 h1 标签。

3

font标签

接下来是 font 标签,比如说font size='5' color='#ff33cc'

这是一个 font 标签/font

其中的 “ size “ 是字体的大小属性这里把大小设置为 “ 5 ” ,“ color ” 是 font的颜色属性,可以在 editplus 中选择。

font size='5' color='#ff33cc'

效果展示:

4

段落,格式标签

p标签是一个定义段落标签

pp 元素会自动在其前后创建一些空白。浏览器会自动添加这些空间,您也可以在样式表中规定。/p

功能 标记
加粗 b文本/b
倾斜 i文本/i
加强语气(加粗)strong文本/strong
加强语气(倾斜)em文本/em
下划线u文本/u
删除线 del文本/del
上标 sup文本/sup
下标 sub文本/sub

换行br/

执行效果图如下:

5

超链接标签

这一节的最后介绍一下超链接标签

a标签:我们有时候跳转页面就是a标签实现的

ahref=http://www.baidu.com百度/a

这样的话我们就可以跳转到百度页面了。

最后给大家看看本节所有的源代码以及执行效果图

源代码

执行效果图

好的这里给大家分享了常见的一些标签想要学习到更多的标签知识的小伙伴要记得关注我们的公众号 我们会持续更新有关于HTML的文章的。

有疑问?有想法?请留言!

微信搜索关注 :java联盟