了編寫一個Java爬蟲,你需要了解以下幾個步驟:
下面是一個基本的Java爬蟲代碼示例,它使用Jsoup解析器和URLConnection庫連接到目標(biāo)網(wǎng)站并提取標(biāo)題和鏈接信息:
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是一款非常實(shí)用的HTML和XML解析器,可以幫助Java開發(fā)者快速、簡單地解析和處理HTML文檔,使得爬蟲開發(fā)變得更加容易。
使用Jsoup解析器需要先將其添加到項(xiàng)目的依賴中。可以通過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(); // 獲取鏈接的文本內(nèi)容
System.out.println(href + ": " + text);
}
}
}
以上代碼使用Jsoup將HTML字符串解析為文檔對象,然后使用選擇器語法獲取所有的鏈接元素,并輸出它們的URL地址和文本內(nèi)容。
除此之外,Jsoup還有很多其他的功能,例如修改元素、過濾HTML文檔等等,可以根據(jù)具體需求靈活運(yùn)用。
1.獲取網(wǎng)頁的 Title:
Document doc=Jsoup.connect("http://example.com/").get();
String title=doc.title();
2.獲取指定標(biāo)簽的文本內(nèi)容:
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 標(biāo)簽:
String html="<p>這是一段 <b>加粗</b> 的文本。</p>";
String text=Jsoup.parse(html).text();
5.修改 HTML 內(nèi)容:
Element element=doc.select("div.content").first();
element.append("<p>這是新增的文本內(nèi)容。</p>");
6.提取網(wǎng)頁中的鏈接:
Elements links=doc.select("a[href]");
for (Element link : links) {
String href=link.attr("href");
System.out.println(href);
}
7.提取網(wǎng)頁中的圖片:
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 等,大家可以自己去了解!
有不足之處大家也可以在評論區(qū)指出!
低版本安卓中對TextView加載html所支持的標(biāo)簽不夠多,比如在搭載了android 5.1的手機(jī)上我們的app調(diào)用了Html.froml為TextView設(shè)置文本時,當(dāng)source包含span標(biāo)簽時不會處理,高版本則會去處理;
對比下高低版本的Html.java如下:
android api level 22
android api level 28
我們發(fā)現(xiàn),高版本是支持span標(biāo)簽的,那低版本怎么處理呢?我們看到方法handleStartTag
中在不支持的標(biāo)簽都會回調(diào)一個方法:
所以我們只需要傳入自定義的TagHandler就可以處理Html.java不支持的標(biāo)簽了。
一開始我們?yōu)門extView設(shè)置文本時這樣寫:
String text="創(chuàng)建<span style='color: #ff8500;'>7</span>天,累計消費(fèi)<span style='color: #ff8500;'>15</span>元";
textview.setText(Html.fromHtml(text));
高版本手機(jī)正常加載span標(biāo)簽,低版本的手機(jī)效果如下:
更改后這樣寫:
String text="創(chuàng)建<span style='color: #ff8500;'>7</span>天,累計消費(fèi)<span style='color: #ff8500;'>15</span>元";
textview.setText(Html.fromHtml(text,null,new CustomTagHandler()));
更改后在低版本效果如下:
CustomTagHandler的實(shí)現(xiàn)參考高版本的Html.java,完整代碼如下:
馨提示:細(xì)讀本文需要2分鐘,速讀僅需1分鐘。
作者|李娜
*本文為「Java聯(lián)盟」原創(chuàng)內(nèi)容,轉(zhuǎn)載無需授權(quán),請保留署名來源。
前言
上一節(jié)我們講到HTML是什么,一個網(wǎng)頁的基本架構(gòu)是怎么樣子。但是往往一個網(wǎng)頁有很多標(biāo)簽,分別代表不同的含義,當(dāng)然如果你不懂的話何談編輯呢?所以這一節(jié),開始講到HTML中的那些常見標(biāo)簽。
第二節(jié) HTML 中的常見標(biāo)簽
首先我們先來了解一下 HTML 標(biāo)簽的類型:
HTML 標(biāo)記標(biāo)簽通常被稱為 HTML 標(biāo)簽(HTML TAG)。
1
單標(biāo)簽與雙標(biāo)簽
單標(biāo)簽:單個標(biāo)簽標(biāo)記名稱
無屬性值: 如: br / (表示換行)
有屬性值: 如: hr width=80% / (表示水平線的寬占參照物的百分之八十)
雙標(biāo)簽:兩個標(biāo)簽,成對出現(xiàn)。
無屬性值: 標(biāo)記名稱.../標(biāo)記名稱
如: title.../title
有屬性值: 標(biāo)記名稱 屬性=屬性值.../標(biāo)記名稱
如:fontsize7.../font
注意:
標(biāo)簽的屬性與屬性之間以空格分隔,屬性不區(qū)分先后順序,且屬性不是必需要寫的。
然后我們來了解下標(biāo)題標(biāo)簽。
2
標(biāo)題標(biāo)簽
標(biāo)題標(biāo)簽:hx/hx
其中“x”是1~6的數(shù)字代表字體的大小
如下就是標(biāo)題標(biāo)簽
h1我是標(biāo)題1/h1
h2我是標(biāo)題2/h2
h3我是標(biāo)題3/h3
h4我是標(biāo)題4/h4
h5我是標(biāo)題5/h5
h6我是標(biāo)題6/h6
執(zhí)行實(shí)際效果圖如下:
一般一篇文章只會使用一個 h1 標(biāo)簽。
3
font標(biāo)簽
接下來是 font 標(biāo)簽,比如說font size='5' color='#ff33cc'
這是一個 font 標(biāo)簽/font
其中的 “ size “ 是字體的大小屬性這里把大小設(shè)置為 “ 5 ” ,“ color ” 是 font的顏色屬性,可以在 editplus 中選擇。
font size='5' color='#ff33cc'
效果展示:
4
段落,格式標(biāo)簽
p標(biāo)簽是一個定義段落標(biāo)簽
pp 元素會自動在其前后創(chuàng)建一些空白。瀏覽器會自動添加這些空間,您也可以在樣式表中規(guī)定。/p
功能 標(biāo)記
加粗 b文本/b
傾斜 i文本/i
加強(qiáng)語氣(加粗)strong文本/strong
加強(qiáng)語氣(傾斜)em文本/em
下劃線u文本/u
刪除線 del文本/del
上標(biāo) sup文本/sup
下標(biāo) sub文本/sub
換行br/
執(zhí)行效果圖如下:
5
超鏈接標(biāo)簽
這一節(jié)的最后介紹一下超鏈接標(biāo)簽
a標(biāo)簽:我們有時候跳轉(zhuǎn)頁面就是a標(biāo)簽實(shí)現(xiàn)的
ahref=http://www.baidu.com百度/a
這樣的話我們就可以跳轉(zhuǎn)到百度頁面了。
最后給大家看看本節(jié)所有的源代碼以及執(zhí)行效果圖
源代碼
執(zhí)行效果圖
好的這里給大家分享了常見的一些標(biāo)簽想要學(xué)習(xí)到更多的標(biāo)簽知識的小伙伴要記得關(guān)注我們的公眾號 我們會持續(xù)更新有關(guān)于HTML的文章的。
有疑問?有想法?請留言!
微信搜索關(guān)注 :java聯(lián)盟
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。