Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
了編寫一個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小時內與您取得聯系。