産品特色
內容簡介
本書將介紹如何使用Python編寫網絡爬蟲程序獲取互聯網上的大數據。本書包括三部分內容:基礎部分、進階部分和項目實踐。基礎部分(第1~6章)主要介紹爬蟲的三個步驟(獲取網頁、解析網頁和存儲數據),並通過諸多示例的講解,讓讀者從基礎內容開始係統性地學習爬蟲技術,並在實踐中提升Python爬蟲水平。進階部分(第7~12章)包括多綫程的並發和並行爬蟲、分布式爬蟲、更換IP等,幫助讀者進一步提升爬蟲水平。項目實踐部分(第13~16章)使用本書介紹的爬蟲技術對幾個真實的網站進行抓取,讓讀者能在讀完本書後根據自己的需求寫齣爬蟲程序。無論是否有編程基礎,隻要是對爬蟲技術感興趣的讀者,本書就能帶領讀者從入門到進階,再到實戰,一步步瞭解爬蟲,終寫齣自己的爬蟲程序。
目錄
推薦序 
推薦序二 
前言 
前言二 
第1章網絡爬蟲入門 
1.1為什麼要學網絡爬蟲 
1.1.1 網絡爬蟲能帶來什麼好處 
1.1.2能從網絡上爬取什麼數據 
1.1.3應不應該學爬蟲 
1.2網絡爬蟲是否閤法 
1.2.1 Robots協議 
1.2.2 網絡爬蟲的約束 
1.3網絡爬蟲的基本議題 
1.3.1 Python爬蟲的流程 
1.3.2三個流程的技術實現 
2章編寫一個網絡爬蟲 
2.1搭建Python平颱 
2.1.1 Python的安裝 
2.1.2使用pip安裝第三方庫 
2.1.3使用編譯器Jupyter編程 
2.2 Python使用入門 
2.2.1基本命令 
2.2.2數據類型 
2.2.3條件語句和循環語句 
2.2.4函數 
2.2.5麵嚮對象編程 
2.3編寫一個簡單的爬蟲 
第3章靜態網頁抓取 
第4章動態網頁抓取 
第5章解析網頁 
第6章數據存儲 
第7章提升爬蟲的速度 
第8章反爬蟲問題 
第9章解決中文亂碼 
第10章登錄與驗證碼處理 
第11章服務器采集 
第12章分布式爬蟲 
第13章爬蟲實踐一:維基百科 
第14章爬蟲實踐二:知乎Live 
第15章爬蟲實踐三:百度地圖API 
第16章爬蟲實踐四:餐廳點評
前言/序言
爬蟲程序是DT(Data Technology,數據技術)收集信息的基礎,程序員爬取目標網站的資料後,就可以分析和建立應用瞭。我們關心的是科技如何給人傢';#: 
 來實效,進而實現目標和理想,不能應用的技術稱為魔術,JI能用J:錶演。我們十分關注讀者能否把握爬蟲概念,所以相關的技術結閤不同的實例講解,希望能指導讀者完成整個數據采集的流程。 
 Python是一個簡單、有效的語言,爬蟲所需的獲取、存儲、整理等流程都可以使用Python係統地實現。此外,絕大部分計算機也町以直接使用Python語言或簡單地安裝Python係統,相信讀者一定能輕鬆地把Python作為爬蟲的主要技術。 
 動心者,當具有大本大源DT的核心是從信息的源頭去理解和分析,以做齣能打動對方的行動決策力+案。由榖歌搜索到現在的大數據時代,爬蟲技術的鶯要性和廣泛性‘直很突齣。 
程序員理解瞭信息的獲取、存儲和整理各方麵的基本關係,纔有可能係統地收集和應用不同源頭和韆變萬化的網站信息。 
 剡居共享程序員要建立共利的互聯網環境,不能把爬蟲作為竊取數據的J_|.具,爬蟲必須在閤情、閤法、閤理的情況下獲取和應用。尊重數據供應者的知識産:權利正常運作纔能産生長久共利的環境。保障對方平颱的正常運作是每個程序員都應當做到的,因此我們把爬蟲的製約放在本書的第1章討論。 
自強不息 
互聯網科技不斷更新和進步,網站信息也隨之不斷改變。爬蟲的樂趣在於如何一直高效率、持續不斷地從日新月異的網站中獲取信息。另外,程序員要不斷學習新技術,自我提高,這樣在爬蟲的過程中纔能夠理解互聯網的運作和結構。後,感謝好友唐鬆給予我一起創作這本書的機會,讓我可以分享爬蟲技術和當中的樂趣。 陳智銓 思路富邦智能應用有限公司行政總裁! 
近年來,大數據成為業界與學術界火熱的話題之一,數據已經成為每個公司極為重要的資産。互聯網大量的公開數據為個人和公司提供瞭以往想象不到的可以獲取的數據量。而掌握網絡爬蟲技術可以幫助你獲取這些有用的公開數據集。 
 執筆本書的起因是我打算在知乎上寫博客嚮香港中文大學市場營銷學的研究生講解Python網絡爬蟲技術,讓這些商科學生掌握一些大數據時代重要的技術能力。因此,本書除瞭麵嚮技術人員外,還麵嚮不懂編程的小白。本書盡量做到淺顯易懂,希望能夠將網絡爬蟲學習的門檻降低,讓大傢都能享受到使用網絡爬蟲編程的樂趣。 
 我是從商科自學轉到數據科學的,因此編程和數據挖掘能力都是上網自學的。在這個過程中,我深刻地體會到,與不知所雲的教學相比,深入淺齣的教學對學習效率有很大提升。因此,學習知識重要的兩點是,通過富有邏輯的框架解構學習和通過實戰解決實際問題,從而增強學習效果。本書的內容側重於將網絡爬蟲技術進行框架性的解構,並使用代碼將爬蟲技術應用於抓取真實的網站。 
 本書所有代碼均在Python 3.6中測試通過,可以從Github下載這些代碼,地址為https://github.com/Santostang/PythonScraping;也可以從百度網盤下載,地址為http://pan.baidu.com/s/lc2w9rck(注意區分數字和字母大小寫)。為瞭方便大傢練習Python網絡爬蟲,我專門搭建瞭一個博客網站用於Python網絡爬蟲的教學,本書教學部分的爬蟲全部基於爬取我的個人博客網站( www.santostang.com)。一方麵,由於這個網站不會更改設計和框架,因此本書的網絡爬蟲代碼可以一直使用;另一方麵,由於這是我自己的博客網站,因此可以避免一些法律上的風險。 
 本書主要分為三部分:基礎部分(第1~6章)、進階部分(第7~12章)和項目實踐部分(第13~16章),以此來針對不同類型的讀者。如果你是Python爬蟲的初學者,那麼可以先學習基礎部分,這部分每一章的後都有自我實踐題,讀者可以通過實踐題熟悉編寫Python爬蟲代碼。如果你已經對Python爬蟲有所瞭解,但是在實踐中遇到瞭各種問題,那麼可以直接學習進階部分,這部分為你在爬蟲實踐中遇到的問題提供瞭解決方案。本書後的項目實踐部分是讓你在學習Python爬蟲後,可以通過在真實網站中練習來消化和吸收Python爬蟲的知識。 
 後,感謝卞誠君老師在我寫書過程中給予的指導!感謝我的父母在撰寫此書的過程中給予的支持和鼓勵!還要感謝李宜威、周啓航、吳嘉傑等各位朋友以及劉建南教授等各位前輩在我的數據科學之路上一直給予的支持和無私幫助! 
 唐鬆2017年6月
				
 
				
				
					《Python 網絡爬蟲從入門到實踐:構建你的信息獲取引擎》  在這浩瀚的數字海洋中,信息如繁星般閃爍,而網絡爬蟲正是我們深入探索這片星空的利器。本書將帶你踏上一段激動人心的旅程,從零開始,掌握利用 Python 構建高效、智能網絡爬蟲的技能。我們不隻是教授枯燥的代碼,更將引導你理解爬蟲背後的邏輯,以及如何在實際應用中發揮其巨大價值。  為什麼選擇 Python 進行網絡爬蟲開發?  Python 憑藉其簡潔的語法、豐富的庫生態以及龐大的社區支持,已成為網絡爬蟲開發的首選語言。無論是初學者還是經驗豐富的開發者,都能快速上手並高效地進行開發。本書將充分利用 Python 的優勢,為你展示如何利用其強大的數據處理能力和靈活的編程範式,輕鬆應對各種網絡爬取挑戰。  本書的獨特之處:  1.  零基礎友好,層層遞進: 我們深知初學者的睏惑。本書從最基礎的 Python 語法和網絡基礎知識講起,逐步引入爬蟲的核心概念和技術,確保你即便沒有編程背景,也能輕鬆跟上。每一章都建立在前一章的基礎上,讓你在不知不覺中構建起堅實的知識體係。  2.  理論與實踐深度融閤: 死記硬背代碼是低效的學習方式。本書注重理論知識的講解,讓你理解“為什麼”這樣做,而不是僅僅“怎麼做”。更重要的是,我們提供瞭大量的真實案例和項目實踐,讓你在動手操作中鞏固知識,掌握將理論轉化為實際能力的技巧。  3.  涵蓋核心爬蟲技術棧: 從基礎的 HTTP 請求,到強大的解析庫 Beautiful Soup 和 lxml,再到處理動態網頁的 Selenium,本書將為你一一剖析。你將學會如何發送請求、解析 HTML、提取所需數據,並能應對各種復雜的網頁結構和反爬蟲策略。  4.  關注爬蟲的健壯性與效率: 爬蟲的生命力在於其穩定性和效率。我們將探討如何設計健壯的爬蟲,使其能夠優雅地處理網絡異常、應對頁麵結構變化,以及如何通過多綫程、異步編程等技術提升爬取速度,最大化你的信息獲取效率。  5.  深入數據存儲與分析: 爬取到數據隻是第一步,如何有效地存儲和利用這些數據纔是關鍵。本書將介紹多種數據存儲方案,包括文件存儲(CSV、JSON)、關係型數據庫(SQLite、MySQL)以及 NoSQL 數據庫(MongoDB),並簡要介紹如何利用 Python 的數據分析庫(如 Pandas)對爬取到的數據進行初步分析和可視化,讓你從原始數據中提煉有價值的信息。  6.  法律與道德的考量: 作為負責任的開發者,理解網絡爬蟲的法律邊界和道德規範至關重要。本書將引導你瞭解 robots.txt 協議、網站的服務條款,以及如何避免對目標網站造成不必要的負擔,確保你的爬蟲行為閤法閤規。  本書內容概覽:  第一部分:踏上爬蟲之旅——基礎篇     第一章:認識網絡爬蟲: 什麼是網絡爬蟲?它能做什麼?爬蟲的類型與應用場景。    第二章:Python 基礎迴顧與準備: 快速迴顧 Python 的核心語法,包括變量、數據類型、控製流、函數等。搭建 Python 開發環境,介紹常用的 IDE。    第三章:網絡基礎知識: 深入理解 HTTP/HTTPS 協議,GET 與 POST 請求,狀態碼,請求頭與響應頭,Cookie 的作用。    第四章:Python 的網絡請求庫 Requests: 學習如何使用 Requests 庫發送各種 HTTP 請求,處理響應,設置請求頭,模擬用戶行為。  第二部分:精通數據抓取——解析與提取     第五章:HTML 與 CSS 基礎: 掌握 HTML 文檔結構,理解 CSS 選擇器,這是高效定位網頁元素的基礎。    第六章:Beautiful Soup 權威指南: 學習使用 Beautiful Soup 解析 HTML 和 XML 文檔,掌握查找、遍曆、修改 DOM 樹的各種方法,是處理結構化數據的利器。    第七章:lxml:性能與靈活的結閤: 探索 lxml 庫,它提供瞭 XPath 和 CSS 選擇器兩種強大的解析方式,並以其齣色的解析速度而聞名。    第八章:從網頁中提取信息: 綜閤運用 Requests、Beautiful Soup 或 lxml,從靜態網頁中提取文本、鏈接、圖片等信息。  第三部分:挑戰動態網頁——現代爬蟲技術     第九章:JavaScript 動態渲染頁麵的奧秘: 理解 JavaScript 如何動態生成網頁內容,為什麼直接使用 Requests 無法獲取完整數據。    第十章:Selenium 自動化瀏覽器: 學習使用 Selenium 控製真實瀏覽器,模擬用戶操作(點擊、滾動、輸入),處理 AJAX 請求,抓取動態加載的內容。    第十一章:Selenium 的進階應用: 掌握等待機製、定位元素的高級技巧,以及如何處理下拉框、彈窗等復雜交互。  第四部分:構建強大的爬蟲係統——進階與優化     第十二章:處理反爬蟲策略: 瞭解常見的反爬蟲技術,如 User-Agent 僞裝、IP 代理池、驗證碼識彆(簡要介紹思路),以及如何規避和應對。    第十三章:多綫程與多進程爬取: 學習如何利用 Python 的多綫程和多進程提高爬取效率,加速數據獲取過程。    第十四章:異步 IO 與協程: 深入理解異步編程模型,掌握 `asyncio` 和 `aiohttp` 等庫,實現高效的並發爬取。    第十五章:爬蟲的異常處理與健壯性設計: 如何編寫健壯的爬蟲代碼,處理網絡超時、連接錯誤、頁麵解析失敗等各種異常情況。  第五部分:數據落地與應用——存儲與管理     第十六章:數據存儲方案: 將爬取到的數據保存到文件(CSV、JSON),瞭解數據庫的基本原理。    第十七章:使用 SQLite 存儲數據: 快速上手 SQLite,在本地構建輕量級數據庫,管理結構化爬取數據。    第十八章:使用 MySQL 存儲數據: 學習如何連接和操作 MySQL 數據庫,為更大型的數據存儲需求打下基礎。    第十九章:使用 MongoDB 存儲數據: 探索 NoSQL 數據庫 MongoDB 的優勢,適用於存儲半結構化或非結構化數據。  第六部分:法律、道德與未來展望     第二十章:網絡爬蟲的法律與道德邊界: 深入理解 robots.txt、網站服務條款,以及數據抓取的法律風險和道德準則。    第二十一章:構建你的信息獲取引擎: 整閤所學知識,設計並實現一個完整的、具有實際應用價值的網絡爬蟲項目。    第二十二章:爬蟲技術的未來趨勢: 簡要介紹機器學習在爬蟲領域的應用,以及未來爬蟲技術的發展方嚮。  誰適閤閱讀本書?     計算機科學、軟件工程等相關專業的學生: 學習一門實用的編程技能,為未來的開發工作打下堅實基礎。    對數據分析、市場調研感興趣的從業者: 掌握從互聯網獲取一手數據的能力,為決策提供支持。    有誌於從事爬蟲開發、數據挖掘領域的程序員: 係統學習爬蟲的核心技術,提升開發實戰能力。    任何希望自動化信息獲取,提高工作效率的職場人士: 學習一項能夠解決實際問題的強大技能。    對互聯網信息世界充滿好奇,希望深入探索的愛好者: 開啓你的數字探索之旅。  本書承諾:  我們將以最清晰、最易懂的方式,將網絡爬蟲的知識體係展現在你麵前。你將不僅僅是學會編寫代碼,更能理解代碼背後的邏輯,掌握解決問題的思路。從零開始,到精通實戰,本書將是你成為一名優秀網絡爬蟲開發者的最佳夥伴。讓我們一起,用 Python 打造屬於你的信息獲取引擎!