色欲av一区久久精品_久久综合色综合色88_无码在线观看不卡_色黄视频网站_亚洲国产精品久久久久秋霞66

java爬蟲代碼示例(簡單案例分析)

時間:2023-05-15

java爬蟲代碼示例

爬蟲是一種依照一定的規(guī)則,自動地抓取萬維網(wǎng)信息的程序或者腳本?,F(xiàn)在比較適合寫網(wǎng)絡(luò)爬蟲的應(yīng)該是Python,今日給我們介紹一下java編寫網(wǎng)絡(luò)爬蟲的簡略案例。
代碼展現(xiàn)
話不多說,直接上代碼
publicclassSpiderService{
publicfinalstaticStringREQUEST_URL=”http://news.sohu.com/”;
publicfinalstaticStringKEYWORD=”^.*疫情.*$”;
publicstaticIntegercount=0;
publicstaticvoidspider(Stringurl)throwsException{
URLrequestUrl=newURL(url);
URLConnectionurlConnection=requestUrl.openConnection();
BufferedReaderbufferedReader=newBufferedReader(newInputStreamReader(urlConnection.getInputStream()));
Stringinput=bufferedReader.readLine();
while(input!=null&&count<1000){
Patternp=Pattern.compile(KEYWORD);
Matcherm=p.matcher(input);
while(m.find()){
count++;
StringmatchContent=m.group();
Stringurl1=getUrl(matchContent);
if(!StringUtils.isEmpty(url1)){
spider(url1);
}else{
Stringvalue=getValue(matchContent);
System.out.println(“網(wǎng)址url:”+url+”,內(nèi)容:”+value);
}
}
input=bufferedReader.readLine();
}
}
privatestaticStringgetUrl(StringmatchContent){
Stringregex=”href=\”(http|https://.*?)[\”\\s]”;
Patternp=Pattern.compile(regex);
Matcherm=p.matcher(matchContent);
Stringcontent=null;
//會存在多個鏈接,能夠用個調(diào)集進(jìn)行存儲,這邊就簡略展現(xiàn)只取一條
if(m.find()){
content=m.group(1);
}
returncontent;
}
privatestaticStringgetValue(StringmatchContent){
Stringregex=”[\\w,,.。\\f\\t\\v\\u4e00-\\u9fa5]*疫情[\\w,,.。\\f\\t\\v\\u4e00-\\u9fa5]*”;
Patternp=Pattern.compile(regex);
Matcherm=p.matcher(matchContent);
Stringcontent=null;
//會存在多個內(nèi)容,能夠用個調(diào)集進(jìn)行存儲,這邊就簡略展現(xiàn)只取一條
if(m.find()){
content=m.group();
}
returncontent;
}
publicstaticvoidmain(String[]args)throwsException{
spider(REQUEST_URL);
}
}
代碼說明
1,首先界說一個起始爬取方位即REQUEST_URL,這邊我挑選從搜狐新聞網(wǎng)開始爬取。然后是界說的需要爬取的內(nèi)容,年關(guān)將至,疫情防控仍舊嚴(yán)峻,所以我這邊挑選了疫情作為KEYWORD,這邊使用正則表達(dá)式。還界說了一個count用來計(jì)算爬出的數(shù)量。
2,接著經(jīng)過url請求REQUEST_URL,并經(jīng)過BufferedReader讀取每次處理一行數(shù)據(jù)。對匹配關(guān)鍵字的內(nèi)容進(jìn)行進(jìn)一步的處理。
3,經(jīng)過getUrl辦法找到匹配內(nèi)容中的超鏈接信息(此處代碼簡化處理,默許一條,實(shí)踐會出現(xiàn)多條,經(jīng)過調(diào)集存儲)。假如存在超鏈接信息,則遞歸調(diào)用spider辦法持續(xù)處理。
4,假如不含有超鏈接信息,則直接經(jīng)過getValue辦法經(jīng)過正則表達(dá)式匹配出相關(guān)信息內(nèi)容(這邊也簡化處理,一行數(shù)據(jù)只取一條,實(shí)踐會多條,調(diào)集進(jìn)行存儲)
結(jié)果展現(xiàn)
后序
1,有些網(wǎng)站會對內(nèi)容進(jìn)行約束,網(wǎng)絡(luò)請求后回來的內(nèi)容底子沒辦法去解析。
2,文中正則表達(dá)式的方法不一定是最佳的,歡迎各位大佬點(diǎn)評。
3,由于存在html標(biāo)題設(shè)置和content實(shí)踐內(nèi)容都包含關(guān)鍵字等狀況,爬出來的數(shù)據(jù)內(nèi)容可能會出現(xiàn)重復(fù)的狀況,我們能夠先把匹配出來的內(nèi)容用一個調(diào)集保存后再進(jìn)行去重處理。
4,大約的思路其實(shí)便是這樣,我們能夠在此基礎(chǔ)上拓展,當(dāng)時面試的時候也有公司問過這種爬蟲大約應(yīng)該怎么寫,也希望能協(xié)助到我們。

java
java爬蟲代碼示例簡單案例分析

目前市面上流行的爬蟲以python居多,簡單了解之后,覺得簡單的一些頁面的爬蟲,主要就是去解析目標(biāo)頁面(html)。那么就在想,java有沒有用戶方便解析html頁面呢?找到了一個jsoup包,一個非常方便解析html的工具呢。
使用方式也非常簡單,引入jar包:
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.8.3</version>
</dependency>
使用http工具,請求獲取目標(biāo)頁面的整個html頁面信息,然后使用jsoup解析:
//獲取html頁面信息
Stringhtml=getHtml();
//使用jsoup將html解析為Document對象
Documentdoc=Jsoup.parse(html);
//后續(xù)操作就可以解析這個DOM樹了,非常簡單。

文章標(biāo)簽:

Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號

與項(xiàng)目經(jīng)理交流
掃描二維碼
與項(xiàng)目經(jīng)理交流
掃描二維碼
與項(xiàng)目經(jīng)理交流
ciya68