了编写一个Java爬虫,你需要了解以下几个步骤:
下面是一个基本的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是一款用于解析HTML和XML文档的Java库。它提供了类似于jQuery的语法来操作文档,使得解析和处理文档变得非常简单。
以下是Jsoup解析器的一些常用功能:
总之,Jsoup是一款非常实用的HTML和XML解析器,可以帮助Java开发者快速、简单地解析和处理HTML文档,使得爬虫开发变得更加容易。
使用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文档等等,可以根据具体需求灵活运用。
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联盟
*请认真填写需求信息,我们会在24小时内与您取得联系。