- 網(wǎng)絡(luò)數(shù)據(jù)采集技術(shù):Java網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)
- 錢洋等
- 2002字
- 2020-09-29 15:49:45
前言
近幾年,網(wǎng)絡(luò)空間大數(shù)據(jù)(Big Data)已成為各領(lǐng)域研究的熱門話題。在企業(yè)應(yīng)用方面,天貓利用海量的用戶數(shù)據(jù)挖掘年輕消費(fèi)者偏好,并將用戶偏好反饋給手機(jī)研發(fā)部門,將其用于手機(jī)設(shè)計(jì);汽車之家利用平臺(tái)中用戶生成的大數(shù)據(jù)對(duì)用戶進(jìn)行畫像,在此基礎(chǔ)上開展個(gè)性化營(yíng)銷。在學(xué)術(shù)界,很多領(lǐng)域的學(xué)者針對(duì)大數(shù)據(jù)衍生出的新問題開展學(xué)術(shù)研究,如大數(shù)據(jù)驅(qū)動(dòng)的客戶洞察、大數(shù)據(jù)驅(qū)動(dòng)的個(gè)性化推薦、大數(shù)據(jù)驅(qū)動(dòng)的管理決策等。
在網(wǎng)絡(luò)大數(shù)據(jù)環(huán)境下,數(shù)據(jù)采集尤為重要。因此,很多企業(yè)都提供了(高級(jí))數(shù)據(jù)采集工程師的職位。對(duì)于很多在校大學(xué)生而言,尤其是碩士生和博士生,網(wǎng)絡(luò)數(shù)據(jù)采集是一項(xiàng)必備的技能。
在編寫本書之前,筆者主要從事數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與開發(fā)工作。在CSDN社區(qū)上,筆者撰寫過一系列介紹Java網(wǎng)絡(luò)爬蟲的博客,這些博客為筆者的主頁帶來了不少訪問量;同時(shí),也有許多博客讀者通過郵件的方式,向筆者咨詢網(wǎng)絡(luò)爬蟲相關(guān)的工具使用、程序調(diào)試等問題。為此,筆者對(duì)Java網(wǎng)絡(luò)爬蟲所涉及的知識(shí)與技術(shù)進(jìn)行了系統(tǒng)的梳理,并打算編寫一本關(guān)于Java網(wǎng)絡(luò)爬蟲的書籍。在寫作過程中,筆者與具有豐富網(wǎng)絡(luò)爬蟲教學(xué)經(jīng)驗(yàn)的姜元春教授就寫作邏輯、介紹的知識(shí)點(diǎn)、使用的案例等多方面的內(nèi)容進(jìn)行了多次討論。本書的內(nèi)容更加注重爬蟲理論、開發(fā)基礎(chǔ)與實(shí)戰(zhàn)演練。基于對(duì)本書爬蟲案例的研讀,讀者可以快速開發(fā)自己需要的其他網(wǎng)絡(luò)爬蟲程序。
本書的內(nèi)容
本書分為9章,具體內(nèi)容如下所示。
第1章至第3章:這3章重點(diǎn)介紹與網(wǎng)絡(luò)爬蟲開發(fā)相關(guān)的基礎(chǔ)知識(shí),其中包括網(wǎng)絡(luò)爬蟲的原理、Java基礎(chǔ)知識(shí)和HTTP協(xié)議等內(nèi)容。
第4章至第6章:這3章分別從網(wǎng)頁內(nèi)容獲取、網(wǎng)頁內(nèi)容解析和網(wǎng)絡(luò)爬蟲數(shù)據(jù)存儲(chǔ)3個(gè)方面介紹網(wǎng)絡(luò)爬蟲開發(fā)過程中所涉及的一系列技術(shù)。在這3章中,涉及很多開源工具的使用,如Jsoup、HttpClient、HtmlCleaner、Fastjson、POI3等。
第7章:本章利用具體的實(shí)戰(zhàn)案例,講解網(wǎng)絡(luò)爬蟲開發(fā)的流程。通過對(duì)本章的學(xué)習(xí),讀者可以輕松開發(fā)Java網(wǎng)絡(luò)爬蟲。
第8章:針對(duì)一些復(fù)雜的頁面,如動(dòng)態(tài)加載的頁面(執(zhí)行JavaScript腳本),本章介紹了一款實(shí)用的工具——Selenium WebDriver。
第9章:本章重點(diǎn)介紹了3種比較流行的Java網(wǎng)絡(luò)爬蟲開源框架,即Crawler4j、WebCollector和WebMagic。讀者可根據(jù)數(shù)據(jù)采集需求,自行開發(fā)支持多線程采集、斷點(diǎn)采集、代理切換等功能的網(wǎng)絡(luò)爬蟲項(xiàng)目。
本書的特色
? 注重基礎(chǔ):俗話說,基礎(chǔ)不牢,地動(dòng)山搖。本書從可讀性和實(shí)用性出發(fā),重點(diǎn)介紹了網(wǎng)絡(luò)爬蟲中涉及的基礎(chǔ)知識(shí)。
? 系統(tǒng)性:本書系統(tǒng)地梳理了網(wǎng)絡(luò)爬蟲的邏輯和開發(fā)網(wǎng)絡(luò)爬蟲需要掌握的技術(shù)。對(duì)網(wǎng)絡(luò)爬蟲初學(xué)者和進(jìn)階者而言,學(xué)習(xí)這些內(nèi)容將有利于解決數(shù)據(jù)采集過程中遇到的各種問題。
? 詳細(xì)的案例講解:本書選取了較為典型的網(wǎng)站,講解網(wǎng)絡(luò)爬蟲經(jīng)常遇到的問題,如HTTPS請(qǐng)求認(rèn)證問題、大文件內(nèi)容獲取問題、模擬登錄問題、不同格式文件(文本、圖片和PDF等)的存儲(chǔ)問題、定時(shí)數(shù)據(jù)采集問題等。
? 開源框架:本書介紹了3種Java網(wǎng)絡(luò)爬蟲開源框架,即Crawler4j、WebCollector和WebMagic。通過對(duì)這3種網(wǎng)絡(luò)爬蟲開源框架的學(xué)習(xí),讀者可以輕松開發(fā)一些高性能的網(wǎng)絡(luò)爬蟲項(xiàng)目。
? 完整的代碼:為便于讀者學(xué)習(xí),對(duì)于每個(gè)數(shù)據(jù)網(wǎng)絡(luò)爬蟲項(xiàng)目,筆者都提供了完整的代碼,并且在代碼中給出了清晰的注釋。
適合的讀者
? Java網(wǎng)絡(luò)爬蟲開發(fā)的初學(xué)者和進(jìn)階者。
? 科研人員,尤其是從事網(wǎng)絡(luò)大數(shù)據(jù)驅(qū)動(dòng)研究的碩士生和博士生。
? 開設(shè)相關(guān)課程的高等院校的師生。
? 企業(yè)網(wǎng)絡(luò)爬蟲開發(fā)人員。
說明
網(wǎng)絡(luò)爬蟲作為一項(xiàng)技術(shù),更應(yīng)該服務(wù)于社會(huì)。在使用該技術(shù)的過程中,應(yīng)遵守Robots協(xié)議(互聯(lián)網(wǎng)行業(yè)數(shù)據(jù)抓取的道德協(xié)議)。同時(shí),需要注意對(duì)數(shù)據(jù)所涉及的知識(shí)產(chǎn)權(quán)和隱私信息進(jìn)行保護(hù)。另外,采集數(shù)據(jù)時(shí),需要注意禮貌,即不頻繁地請(qǐng)求網(wǎng)頁,以防止給數(shù)據(jù)提供者的服務(wù)器造成不良影響。在使用所采集的數(shù)據(jù)時(shí),需要注意是否涉及商業(yè)利益和相關(guān)法律。最后,本書中所有使用的案例皆為測(cè)試案例,僅供讀者學(xué)習(xí)使用,本書中的URL均做了處理。
基金項(xiàng)目
本書由國(guó)家自然科學(xué)基金重大項(xiàng)目課題“面向大數(shù)據(jù)的商務(wù)分析與計(jì)算方法以及支撐平臺(tái)研究(71490725)”、國(guó)家自然科學(xué)基金重大研究計(jì)劃子課題“面向商務(wù)領(lǐng)域的大數(shù)據(jù)資源池及集成示范平臺(tái)(91746302)”、國(guó)家自然科學(xué)基金優(yōu)秀青年基金“個(gè)性化營(yíng)銷理論與方法(71722010)”提供資助。
勘誤
由于筆者的水平有限,書中難免出現(xiàn)一些錯(cuò)誤及不準(zhǔn)確之處,懇請(qǐng)讀者批評(píng)指正。為及時(shí)更正書中不恰當(dāng)?shù)膬?nèi)容,筆者在CSDN博客中創(chuàng)建了一個(gè)板塊,讀者可以將書中的問題以評(píng)論的方式進(jìn)行反饋,筆者將針對(duì)這些問題進(jìn)行勘誤。另外,也歡迎讀者通過發(fā)送電子郵件(qy20115549@126.com)的方式,反饋書稿的問題。
致謝
感謝電子工業(yè)出版社的林瑞和編輯、合肥工業(yè)大學(xué)電子商務(wù)研究所的劉業(yè)政教授和孫見山副教授等給本書提出的寶貴建議。
感謝華為的杜非、王佳佳和王錦坤師兄的幫助,是他們將我?guī)刖幊痰氖澜纭?/p>
感謝淮南師范學(xué)院的孫娜麗女士對(duì)整本書稿寫作語言的梳理。
感謝合肥工業(yè)大學(xué)電子商務(wù)研究所的朱婷婷、楊露、田志強(qiáng)、宋穎欣、張雪、李哲、賀菲菲、葉暢、陶守正、梁瑞誠(chéng)等博士參與本書內(nèi)容的討論。
最后,希望熱愛網(wǎng)絡(luò)爬蟲開發(fā)的小伙伴們能夠喜歡本書。
錢洋
2019年9月
- C語言程序設(shè)計(jì)(第2 版)
- Java軟件開發(fā)基礎(chǔ)
- Building a Quadcopter with Arduino
- Drupal 8 Module Development
- 編程數(shù)學(xué)
- C語言從入門到精通
- Application Development with Swift
- Python程序設(shè)計(jì)教程
- Access 2016數(shù)據(jù)庫(kù)應(yīng)用與開發(fā):實(shí)戰(zhàn)從入門到精通(視頻教學(xué)版)
- 生成藝術(shù):Processing視覺創(chuàng)意入門
- C語言從入門到精通(第4版)
- Git Version Control Cookbook
- 區(qū)塊鏈社會(huì):區(qū)塊鏈助力國(guó)家治理能力現(xiàn)代化
- C#多線程編程實(shí)戰(zhàn)
- MEAN Blueprints