本項(xiàng)目中需要用到兩個第三方j(luò)ar包,分別為 jsoup 和 commons-io。
jsoup的作用是為了解析網(wǎng)頁, commons-io 是為了把數(shù)據(jù)保存到本地。
1.爬取貼吧
第一步,打開eclipse,新建一個java項(xiàng)目,名字就叫做 pachong:
然后,新建一個類,作為我們程序的入口。
這個作為入口類,里面就寫一個main方法即可。
public class StartUp { public static void main(String[] args) { } }
第二步,導(dǎo)入我們的依賴,兩個jar包:
右鍵jar包,Build path , add to Build path
接著,我們試著搜索一下動漫吧的數(shù)據(jù):
https://tieba.baidu.com/f?kw=%B6%AF%C2%FE&tpl=5
public class StartUp { public static void main(String[] args) { String url = "https://tieba.baidu.com/f?kw=%B6%AF%C2%FE&tpl=5"; Connection connect = Jsoup.connect(url); System.out.println(connect); } }
如果能夠成功打印出來鏈接,說明我們的連接測試是成功的!
然后,我們調(diào)用connect的get方法,獲取鏈接到的數(shù)據(jù):
Document document = connect.get();
這邊需要拋出一個異常,而且是強(qiáng)制性的,因?yàn)橛锌赡軙@取失敗。這邊我們直接拋出去,不去捕獲。
public class StartUp { public static void main(String[] args) throws IOException { String url = "https://tieba.baidu.com/f?kw=%B6%AF%C2%FE&tpl=5"; Connection connect = Jsoup.connect(url); System.out.println(connect); Document document = connect.get(); System.out.println(document); } }
打印出來的結(jié)果:
可見,document對象裝的就是一個完整HTML頁面。
在這里,我們想要拿到的第一個數(shù)據(jù),就是所有帖子的標(biāo)題:
我們發(fā)現(xiàn),每一個標(biāo)題都是一個a連接,class為j_th_tit 。
下一步我們就考慮獲取所有class為 j_th_tit 的元素。
我們發(fā)現(xiàn),document對象給我們提供了 getElementsByClass 的方法,顧名思義,就是獲取class為 XXX 的元素。
Elements titles = document.getElementsByClass("j_th_tit");
接著,遍歷titles,打印出每一個標(biāo)題的名稱:
for (int i = 0; i < titles.size(); i++) { System.out.println(titles.get(i).attr("title")); }
當(dāng)前代碼:
import java.io.IOException; import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; public class StartUp { public static void main(String[] args) throws IOException { String url = "https://tieba.baidu.com/f?kw=%B6%AF%C2%FE&tpl=5"; Connection connect = Jsoup.connect(url); Document document = connect.get(); Elements titles = document.getElementsByClass("j_th_tit"); for (int i = 0; i < titles.size(); i++) { System.out.println(titles.get(i).attr("title")); } } }
以上就是java編程實(shí)現(xiàn)簡單的網(wǎng)絡(luò)爬蟲示例過程的詳細(xì)內(nèi)容,更多關(guān)于java實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲的資料請關(guān)注服務(wù)器之家其它相關(guān)文章!
原文鏈接:https://blog.csdn.net/weixin_39570751/article/details/120713590