java編程實(shí)現(xiàn)簡(jiǎn)單的網(wǎng)絡(luò)爬蟲(chóng)示例過(guò)程
本項(xiàng)目中需要用到兩個(gè)第三方j(luò)ar包,分別為 jsoup 和 commons-io。
jsoup的作用是為了解析網(wǎng)頁(yè), commons-io 是為了把數(shù)據(jù)保存到本地。
1.爬取貼吧
第一步,打開(kāi)eclipse,新建一個(gè)java項(xiàng)目,名字就叫做 pachong:
然后,新建一個(gè)類,作為我們程序的入口。
這個(gè)作為入口類,里面就寫(xiě)一個(gè)main方法即可。
public class StartUp { public static void main(String[] args) { } }
第二步,導(dǎo)入我們的依賴,兩個(gè)jar包:
右鍵jar包,Build path , add to Build path
接著,我們?cè)囍阉饕幌聞?dòng)漫吧的數(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); } }
如果能夠成功打印出來(lái)鏈接,說(shuō)明我們的連接測(cè)試是成功的!
然后,我們調(diào)用connect的get方法,獲取鏈接到的數(shù)據(jù):
Document document = connect.get();
這邊需要拋出一個(gè)異常,而且是強(qiáng)制性的,因?yàn)橛锌赡軙?huì)獲取失敗。這邊我們直接拋出去,不去捕獲。
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); } }
打印出來(lái)的結(jié)果:
可見(jiàn),document對(duì)象裝的就是一個(gè)完整HTML頁(yè)面。
在這里,我們想要拿到的第一個(gè)數(shù)據(jù),就是所有帖子的標(biāo)題:
我們發(fā)現(xiàn),每一個(gè)標(biāo)題都是一個(gè)a連接,class為j_th_tit 。
下一步我們就考慮獲取所有class為 j_th_tit 的元素。
我們發(fā)現(xiàn),document對(duì)象給我們提供了 getElementsByClass 的方法,顧名思義,就是獲取class為 XXX 的元素。
Elements titles = document.getElementsByClass("j_th_tit");
接著,遍歷titles,打印出每一個(gè)標(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)簡(jiǎn)單的網(wǎng)絡(luò)爬蟲(chóng)示例過(guò)程的詳細(xì)內(nèi)容,更多關(guān)于java實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲(chóng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Java 使用maven實(shí)現(xiàn)Jsoup簡(jiǎn)單爬蟲(chóng)案例詳解
- Java 實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲(chóng)框架詳細(xì)代碼
- 半小時(shí)實(shí)現(xiàn)Java手?jǐn)]網(wǎng)絡(luò)爬蟲(chóng)框架(附完整源碼)
- 使用java實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲(chóng)
- Java實(shí)現(xiàn)的爬蟲(chóng)抓取圖片并保存操作示例
- java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)爬蟲(chóng)代碼示例
- java實(shí)現(xiàn)網(wǎng)頁(yè)爬蟲(chóng)的示例講解
- java實(shí)現(xiàn)簡(jiǎn)單的爬蟲(chóng)之今日頭條
- Java爬蟲(chóng) 信息抓取的實(shí)現(xiàn)
- Java實(shí)現(xiàn)爬蟲(chóng)
相關(guān)文章
Java的Spring框架中DAO數(shù)據(jù)訪問(wèn)對(duì)象的使用示例
這篇文章主要介紹了Java的Spring框架中DAO數(shù)據(jù)訪問(wèn)對(duì)象的使用示例,分為在Spring中DOA與JDBC以及與Hibernate的配合使用兩種情況來(lái)進(jìn)行演示,需要的朋友可以參考下2016-03-03圖解Eclipse j2ee開(kāi)發(fā)環(huán)境的搭建過(guò)程
這篇文章以圖文結(jié)合的方式介紹了Eclipse j2ee開(kāi)發(fā)環(huán)境的搭建過(guò)程,內(nèi)容很詳細(xì),每一個(gè)步驟都有對(duì)應(yīng)的操作截圖,需要的朋友可以參考下2015-08-08Springboot-admin整合Quartz實(shí)現(xiàn)動(dòng)態(tài)管理定時(shí)任務(wù)的過(guò)程詳解
Quartz是一款Java編寫(xiě)的開(kāi)源任務(wù)調(diào)度框架,同時(shí)它也是Spring默認(rèn)的任務(wù)調(diào)度框架,它的作用其實(shí)類似于Timer定時(shí)器以及ScheduledExecutorService調(diào)度線程池,這篇文章主要介紹了Springboot-admin整合Quartz實(shí)現(xiàn)動(dòng)態(tài)管理定時(shí)任務(wù),需要的朋友可以參考下2023-04-04java實(shí)現(xiàn)開(kāi)根號(hào)的運(yùn)算方式
這篇文章主要介紹了java實(shí)現(xiàn)開(kāi)根號(hào)的運(yùn)算方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07解決springboot?druid數(shù)據(jù)庫(kù)連接池連接失敗后一直重連問(wèn)題
這篇文章主要介紹了解決springboot?druid數(shù)據(jù)庫(kù)連接池連接失敗后一直重連問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11