整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          如何用JAVA 寫一個簡單爬蟲

          如何用JAVA 寫一個簡單爬蟲

          了編寫一個Java爬蟲,你需要了解以下幾個步驟:

          1. 首先,你需要確定你要抓取的網(wǎng)站??梢詮臑g覽器中復(fù)制網(wǎng)站的URL并粘貼到你的Java代碼中。
          2. 接下來,你需要使用Java的網(wǎng)絡(luò)編程API連接到該網(wǎng)站。你可以使用URLConnection或HttpClient等庫。
          3. 一旦你建立了一個連接,你就可以開始讀取網(wǎng)頁內(nèi)容。你可以使用Java的IO庫讀取網(wǎng)頁。
          4. 在讀取網(wǎng)頁內(nèi)容之后,你需要解析網(wǎng)頁以提取所需的信息。這可以使用Java的解析器,如Jsoup或XML解析器。
          5. 最后,你需要存儲或使用所提取的信息。你可以將信息保存到數(shù)據(jù)庫中,將其輸出到文件中,或?qū)⑵溆糜谄渌猛尽?/li>

          下面是一個基本的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

          Jsoup是一款用于解析HTML和XML文檔的Java庫。它提供了類似于jQuery的語法來操作文檔,使得解析和處理文檔變得非常簡單。

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

          1. 解析HTML文檔:使用Jsoup可以輕松解析HTML文檔,并且可以處理各種標(biāo)簽、屬性、文本內(nèi)容等。
          2. 獲取元素:可以使用類似于jQuery的選擇器語法來獲取HTML文檔中的元素,例如獲取所有的鏈接、圖片等。
          3. 修改元素:可以使用Jsoup修改HTML文檔中的元素,例如修改元素的屬性、添加或刪除元素等。
          4. 過濾HTML文檔:可以使用Jsoup過濾HTML文檔中的不必要的元素,例如過濾掉廣告、統(tǒng)計代碼等。
          5. 處理字符編碼:可以使用Jsoup來處理HTML文檔中的字符編碼,例如將文檔中的ISO-8859-1編碼轉(zhuǎn)換為UTF-8編碼等。
          6. 支持HTTPS:Jsoup還支持使用HTTPS協(xié)議獲取HTML文檔,可以使用它來爬取一些需要登錄才能訪問的網(wǎng)站。

          總之,Jsoup是一款非常實(shí)用的HTML和XML解析器,可以幫助Java開發(fā)者快速、簡單地解析和處理HTML文檔,使得爬蟲開發(fā)變得更加容易。

          Jsoup的使用

          使用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)用。

          Jsoup 解析器的常見功能和代碼片段示例

          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)盟


          主站蜘蛛池模板: 日本一区二区三区精品国产 | 国产成人无码AV一区二区在线观看| 竹菊影视欧美日韩一区二区三区四区五区| 久草新视频一区二区三区| 国产精品美女一区二区视频| 91视频一区二区| 国产精品99精品一区二区三区| 国产一区二区三区视频在线观看| av在线亚洲欧洲日产一区二区| 国产一区二区三区不卡观| 日韩免费一区二区三区在线| 国产精品免费综合一区视频| 久久国产香蕉一区精品| 亚洲一区二区久久| 精品乱码一区内射人妻无码| 亚洲熟女少妇一区二区| 国产一区二区三区乱码网站| 午夜无码一区二区三区在线观看 | 日本一区二区三区在线看| 一区二区三区伦理高清| 精品无码一区二区三区爱欲九九 | 国产91精品一区二区麻豆亚洲| 消息称老熟妇乱视频一区二区| 亚洲精品伦理熟女国产一区二区| 男人的天堂精品国产一区| 日韩AV无码久久一区二区| 精品视频一区在线观看| 91香蕉福利一区二区三区| 一区二区三区在线看| 亚洲国产精品一区二区三区在线观看| 福利电影一区二区| 精品一区高潮喷吹在线播放| 亚洲国产成人久久综合一区77| 精品无码av一区二区三区| 国产福利电影一区二区三区久久久久成人精品综合 | 久久精品一区二区三区资源网| 韩国精品一区视频在线播放| 久久精品亚洲一区二区| 亚洲国产一区二区三区| 亚洲综合无码一区二区痴汉| 日本大香伊一区二区三区|