1、//isUrlAlreadyVisited:URL是否訪問(wèn)過(guò),大型的搜索引擎往往采用BloomFilter進(jìn)行排重,這里簡(jiǎn)單使用HashMap //isDepthAcceptable:是否達(dá)到指定的深度上限。爬蟲(chóng)一般采取廣度優(yōu)先的方式。
目前成都創(chuàng)新互聯(lián)已為上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、綿陽(yáng)服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、永和網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
2、你可以簡(jiǎn)單的使用httpclient發(fā)送get/post請(qǐng)求,獲取結(jié)果,然后使用截取字符串、正則表達(dá)式獲取想要的內(nèi)容。或者使用像Jsoup/crawler4j等這些已經(jīng)封裝好的類庫(kù),更方便的爬取信息。
3、WebSPHINX WebSPHINX是一個(gè)Java類包和Web爬蟲(chóng)的交互式開(kāi)發(fā)環(huán)境。Web爬蟲(chóng)(也叫作機(jī)器人或蜘蛛)是可以自動(dòng)瀏覽與處理Web頁(yè)面的程序。WebSPHINX由兩部分組成:爬蟲(chóng)工作平臺(tái)和WebSPHINX類包。
4、使用Java寫爬蟲(chóng),常見(jiàn)的網(wǎng)頁(yè)解析和提取方法有兩種:利用開(kāi)源Jar包Jsoup和正則。一般來(lái)說(shuō),Jsoup就可以解決問(wèn)題,極少出現(xiàn)Jsoup不能解析和提取的情況。Jsoup強(qiáng)大功能,使得解析和提取異常簡(jiǎn)單。知乎爬蟲(chóng)采用的就是Jsoup。
5、普通的網(wǎng)頁(yè)直接用httpclient封裝的API就可以獲取網(wǎng)頁(yè)HTML了,然后 JSoup、正則 提取內(nèi)容。若網(wǎng)站有反爬蟲(chóng)機(jī)制的,會(huì)需要構(gòu)造User-Agent 偽裝瀏覽器; 若有需要登錄的,會(huì)傳入cookie進(jìn)去。
1、import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;/* * 網(wǎng)頁(yè)爬蟲(chóng):其實(shí)就一個(gè)程序用于在互聯(lián)網(wǎng)中獲取符合指定規(guī)則的數(shù)據(jù)。 * * 爬取郵箱地址。
2、我主要使用Jsoup解析,獲取源碼有時(shí)候使用Jsoup,比較復(fù)雜的時(shí)候比如需要換ip,改編碼或者模擬登陸的時(shí)候使用HttpClient,以下是抓取開(kāi)源中國(guó)新聞的一段代碼,可以運(yùn)行。
3、普通的網(wǎng)頁(yè)直接用httpclient封裝的API就可以獲取網(wǎng)頁(yè)HTML了,然后 JSoup、正則 提取內(nèi)容。若網(wǎng)站有反爬蟲(chóng)機(jī)制的,會(huì)需要構(gòu)造User-Agent 偽裝瀏覽器; 若有需要登錄的,會(huì)傳入cookie進(jìn)去。
4、補(bǔ)充:Java是一種可以撰寫跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。
1、原理即是保存cookie數(shù)據(jù)保存登陸后的cookie.以后每次抓取頁(yè)面把cookie在頭部信息里面發(fā)送過(guò)去。系統(tǒng)是根據(jù)cookie來(lái)判斷用戶的。有了cookie就有了登錄狀態(tài),以后的訪問(wèn)都是基于這個(gè)cookie對(duì)應(yīng)的用戶的。
2、普通的網(wǎng)頁(yè)直接用httpclient封裝的API就可以獲取網(wǎng)頁(yè)HTML了,然后 JSoup、正則 提取內(nèi)容。若網(wǎng)站有反爬蟲(chóng)機(jī)制的,會(huì)需要構(gòu)造User-Agent 偽裝瀏覽器; 若有需要登錄的,會(huì)傳入cookie進(jìn)去。
3、Java開(kāi)源Web爬蟲(chóng) Heritrix Heritrix是一個(gè)開(kāi)源,可擴(kuò)展的web爬蟲(chóng)項(xiàng)目。Heritrix設(shè)計(jì)成嚴(yán)格按照robots.txt文件的排除指示和META robots標(biāo)簽。更多Heritrix信息 WebSPHINX WebSPHINX是一個(gè)Java類包和Web爬蟲(chóng)的交互式開(kāi)發(fā)環(huán)境。
4、傳統(tǒng)爬蟲(chóng)從一個(gè)或若干初始網(wǎng)頁(yè)的URL開(kāi)始,獲得初始網(wǎng)頁(yè)上的URL,在抓取網(wǎng)頁(yè)的過(guò)程中,不斷從當(dāng)前頁(yè)面上抽取新的URL放入隊(duì)列,直到滿足系統(tǒng)的一定停止條件。java實(shí)現(xiàn)網(wǎng)頁(yè)源碼獲取的步驟:(1)新建URL對(duì)象,表示要訪問(wèn)的網(wǎng)址。
5、缺點(diǎn):需要控制并發(fā),并且要控制什么時(shí)候銷毀線程(thread1空閑,并且queue為空不代表任務(wù)可以結(jié)束,可能thread2結(jié)果還沒(méi)返回),當(dāng)被抓取的網(wǎng)站響應(yīng)較慢時(shí),會(huì)拖慢整個(gè)爬蟲(chóng)進(jìn)度。