selenium安裝好后需要配置環(huán)境嗎 python網(wǎng)絡(luò)爬蟲具體是怎樣的?
python網(wǎng)絡(luò)爬蟲具體是怎樣的?Python網(wǎng)絡(luò)爬蟲實(shí)際上就是一個(gè)用python開發(fā)的程序,爬蟲就好比蜘蛛一樣順著蜘蛛網(wǎng)到達(dá)網(wǎng)的每個(gè)地方。在互聯(lián)網(wǎng)上也是同樣的道理,好比一個(gè)網(wǎng)站,網(wǎng)站里邊分布了很多頁(yè)
python網(wǎng)絡(luò)爬蟲具體是怎樣的?
Python網(wǎng)絡(luò)爬蟲實(shí)際上就是一個(gè)用python開發(fā)的程序,爬蟲就好比蜘蛛一樣順著蜘蛛網(wǎng)到達(dá)網(wǎng)的每個(gè)地方。在互聯(lián)網(wǎng)上也是同樣的道理,好比一個(gè)網(wǎng)站,網(wǎng)站里邊分布了很多頁(yè)面鏈接,通過(guò)鼠標(biāo)點(diǎn)擊可以訪問(wèn)到下一層的內(nèi)容,而網(wǎng)絡(luò)爬蟲就模擬人們?cè)L問(wèn)網(wǎng)頁(yè)那樣,一個(gè)一個(gè)的打開連接進(jìn)行訪問(wèn)并按照開發(fā)設(shè)定的規(guī)則抓取信息的這么一個(gè)過(guò)程。
由于Python的語(yǔ)法簡(jiǎn)單、學(xué)習(xí)成本比較低,有眾多的開源類庫(kù)與框架可以使用,使得開發(fā)難度與時(shí)間大大縮減,得到了大多數(shù)人的青睞,特別是在數(shù)據(jù)處理方面。
在這里推薦幾個(gè)值得關(guān)注的異步爬蟲庫(kù),給你做下參考。
Scrapy是一個(gè)為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架。 可以應(yīng)用在包括數(shù)據(jù)挖掘,信息處理或存儲(chǔ)歷史數(shù)據(jù)等一系列的程序中。
其最初是為了 頁(yè)面抓取 (更確切來(lái)說(shuō), 網(wǎng)絡(luò)抓取 )所設(shè)計(jì)的, 也可以應(yīng)用在獲取API所返回的數(shù)據(jù)(例如 Amazon Associates Web Services ) 或者通用的網(wǎng)絡(luò)爬蟲。
PySpider:一個(gè)國(guó)人編寫的強(qiáng)大的網(wǎng)絡(luò)爬蟲系統(tǒng)并帶有強(qiáng)大的WebUI。采用Python語(yǔ)言編寫,分布式架構(gòu),支持多種數(shù)據(jù)庫(kù)后端,強(qiáng)大的WebUI支持腳本編輯器,任務(wù)監(jiān)視器,項(xiàng)目管理器以及結(jié)果查看器。
Crawley可以高速爬取對(duì)應(yīng)網(wǎng)站的內(nèi)容,支持關(guān)系和非關(guān)系數(shù)據(jù)庫(kù),數(shù)據(jù)可以導(dǎo)出為JSON、XML等。
4.Portia
Portia是一個(gè)開源可視化爬蟲工具,可讓您在不需要任何編程知識(shí)的情況下爬取網(wǎng)站!簡(jiǎn)單地注釋您感興趣的頁(yè)面,Portia將創(chuàng)建一個(gè)蜘蛛來(lái)從類似的頁(yè)面提取數(shù)據(jù)。
Newspaper可以用來(lái)提取新聞、文章和內(nèi)容分析。使用多線程,支持10多種語(yǔ)言等。作者從requests庫(kù)的簡(jiǎn)潔與強(qiáng)大得到靈感,使用python開發(fā)的可用于提取文章內(nèi)容的程序。支持10多種語(yǔ)言并且所有的都是unicode編碼。
Soup
Beautiful Soup 是一個(gè)可以從HTML或XML文件中提取數(shù)據(jù)的Python庫(kù).它能夠通過(guò)你喜歡的轉(zhuǎn)換器實(shí)現(xiàn)慣用的文檔導(dǎo)航,查找,修改文檔的.Beautiful Soup會(huì)幫你節(jié)省數(shù)小時(shí)甚至數(shù)天的工作時(shí)間。這個(gè)我是使用的特別頻繁的。在獲取html元素,都是bs4完成的。
Selenium 是自動(dòng)化測(cè)試工具。它支持各種瀏覽器,包括 Chrome,Safari,F(xiàn)irefox 等主流界面式瀏覽器,如果在這些瀏覽器里面安裝一個(gè) Selenium 的插件,可以方便地實(shí)現(xiàn)Web界面的測(cè)試. Selenium 支持瀏覽器驅(qū)動(dòng)。Selenium支持多種語(yǔ)言開發(fā),比如 Java,C,Ruby等等,PhantomJS 用來(lái)渲染解析JS,Selenium 用來(lái)驅(qū)動(dòng)以及與 Python 的對(duì)接,Python 進(jìn)行后期的處理。
下面是網(wǎng)絡(luò)爬蟲工作的大致流程圖
如何實(shí)現(xiàn)在java程序中實(shí)現(xiàn)打開某個(gè)指定瀏覽器?
打開瀏覽器:根據(jù)不同平臺(tái)的默認(rèn)安裝路徑找到 各個(gè)瀏覽器的可執(zhí)行文件(也可自行指定瀏覽器路徑),然后用java的Runtime這類的東東開啟進(jìn)程就行了。
進(jìn)程可附帶執(zhí)行參數(shù),將首參數(shù)指定為一個(gè)url,就可打開指定頁(yè)面。
通信:java無(wú)法做到與瀏覽器API交互,因?yàn)榫幾g發(fā)行的瀏覽器可執(zhí)行文件不是內(nèi)核源碼,木有豐富的內(nèi)置API可供調(diào)用。因此,在打開瀏覽器的時(shí)候會(huì)指定 URL 到Selenium的遠(yuǎn)程服務(wù)頁(yè)上去。
這個(gè)頁(yè)面通過(guò)js建立與遠(yuǎn)程服務(wù)器的HTTP連接通信(如 長(zhǎng)連接,websocket,ajax輪詢等)。
當(dāng)遠(yuǎn)程代碼需要獲取、操作本地瀏覽器DOM、JS 等內(nèi)容時(shí),推送一段指定js源碼到瀏覽器端執(zhí)行。
執(zhí)行完成后將結(jié)果發(fā)送至遠(yuǎn)端服務(wù)器上。以此來(lái)實(shí)現(xiàn)遠(yuǎn)端對(duì)客戶端瀏覽器頁(yè)面內(nèi)容通信。