隨著網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,萬(wàn)維網(wǎng)成為大量信息的載體,如何有效地提取并利用這些信息成為一個(gè)巨大的挑戰(zhàn),網(wǎng)絡(luò)爬蟲(chóng)應(yīng)運(yùn)而生。本書(shū)介紹了如何利用Python 3.x來(lái)開(kāi)發(fā)網(wǎng)絡(luò)爬蟲(chóng),并通過(guò)爬蟲(chóng)原理講解以及Web前端基礎(chǔ)知識(shí)引領(lǐng)讀者入門(mén),結(jié)合企業(yè)實(shí)戰(zhàn),讓讀者快速學(xué)會(huì)編寫(xiě)Python網(wǎng)絡(luò)爬蟲(chóng)。 本書(shū)適用于中等水平的Python開(kāi)發(fā)人員、高等院校及培訓(xùn)學(xué)校的老師和學(xué)生。通過(guò)本書(shū)的學(xué)習(xí)可以輕松領(lǐng)會(huì)Python在網(wǎng)絡(luò)爬蟲(chóng)、數(shù)據(jù)挖掘領(lǐng)域的精髓,可勝任Python網(wǎng)絡(luò)爬蟲(chóng)工程師的工作以及完成各種網(wǎng)絡(luò)爬蟲(chóng)項(xiàng)目的代碼編寫(xiě)。
本書(shū)從基本的爬蟲(chóng)原理開(kāi)始講解,通過(guò)介紹Pthyon編程語(yǔ)言和Web前端基礎(chǔ)知識(shí)引領(lǐng)讀者入門(mén),之后介紹動(dòng)態(tài)爬蟲(chóng)原理以及Scrapy爬蟲(chóng)框架,*后介紹大規(guī)模數(shù)據(jù)下分布式爬蟲(chóng)的設(shè)計(jì)以及PySpider爬蟲(chóng)框架等。
前言
在瞬息萬(wàn)變的IT時(shí)代,一群懷揣夢(mèng)想的人創(chuàng)辦了千鋒教育,投身到IT培訓(xùn)行業(yè)。七年來(lái),一批批有志青年加入千鋒教育,為了夢(mèng)想篤定前行。千鋒教育秉承用良心做教育的理念,為培養(yǎng)頂級(jí)IT精英而付出一切努力,為什么會(huì)有這樣的夢(mèng)想,我們先來(lái)聽(tīng)一聽(tīng)用人企業(yè)和求職者的心聲:
現(xiàn)在符合企業(yè)需求的IT技術(shù)人才非常緊缺,對(duì)這方面的優(yōu)秀人才我們會(huì)像珍寶一樣對(duì)待,可為什么至今沒(méi)有合格的人才出現(xiàn)呢?
面試的時(shí)候,用人企業(yè)問(wèn)能做什么,這個(gè)項(xiàng)目如何來(lái)實(shí)現(xiàn),需要多長(zhǎng)的時(shí)間,我們當(dāng)時(shí)都蒙了回答不上來(lái)。
這已經(jīng)是面試過(guò)的第十家公司了,如果再不行的話,是不是要考慮轉(zhuǎn)行了,難道大學(xué)里的四年都白學(xué)了?
這已經(jīng)是參加面試的N個(gè)求職者了,為什么都是計(jì)算機(jī)專(zhuān)業(yè),當(dāng)問(wèn)到項(xiàng)目如何實(shí)現(xiàn),怎么連思路都沒(méi)有呢?
這些心聲并不是個(gè)別現(xiàn)象,而是社會(huì)反映出的一種普遍現(xiàn)象。高校的IT教育與企業(yè)的真實(shí)需求存在脫節(jié),如果高校的相關(guān)課程仍然不進(jìn)行更新的話,畢業(yè)生將面臨難以就業(yè)的困境,很多用人單位表示,高校畢業(yè)生表象上知識(shí)豐富,但絕大多數(shù)在實(shí)際工作中用之甚少,甚至完全用不上高校學(xué)習(xí)階段所學(xué)知識(shí)。針對(duì)上述存在的問(wèn)題,國(guó)務(wù)院也作出了關(guān)于加快發(fā)展現(xiàn)代職業(yè)教育的決定。很慶幸,千鋒所做的事情就是配合高校達(dá)成產(chǎn)學(xué)合作。
千鋒教育致力于打造IT職業(yè)教育全產(chǎn)業(yè)鏈人才服務(wù)平臺(tái),全國(guó)數(shù)十家分校,數(shù)百名講師團(tuán)堅(jiān)持以教學(xué)為本的方針,全國(guó)采用面對(duì)面教學(xué),傳授企業(yè)實(shí)用技能,教學(xué)大綱實(shí)時(shí)緊跟企業(yè)需求,擁有全國(guó)一體化就業(yè)體系。千鋒的價(jià)值觀是做真實(shí)的自己,用良心做教育。
針對(duì)高校教師的服務(wù):
(1) 千鋒教育基于近七年的教育培訓(xùn)經(jīng)驗(yàn),精心設(shè)計(jì)了包含教材 授課資源 考試系統(tǒng) 測(cè)試題 輔助案例的教學(xué)資源包,節(jié)約教師的備課時(shí)間,緩解教師的教學(xué)壓力,顯著提高教學(xué)質(zhì)量。
(2) 本書(shū)配套代碼視頻,索取網(wǎng)址: http://www.codingke.com/。
(3) 本書(shū)配備了千鋒教育優(yōu)秀講師錄制的教學(xué)視頻,按本書(shū)知識(shí)結(jié)構(gòu)體系部署到了教學(xué)輔助平臺(tái)(扣丁學(xué)堂)上,可以作為教學(xué)資源使用,也可以作為備課參考。
高校教師如需索要配套教學(xué)資源,請(qǐng)關(guān)注(扣丁學(xué)堂)師資服務(wù)平臺(tái),掃描下方二維碼關(guān)注微信公眾平臺(tái)索取。
扣丁學(xué)堂
針對(duì)高校學(xué)生的服務(wù):
(1) 學(xué)IT有疑問(wèn),就找千問(wèn)千知,它是一個(gè)有問(wèn)必答的IT社區(qū),平臺(tái)上的專(zhuān)業(yè)答疑輔導(dǎo)老師承諾工作時(shí)間3小時(shí)內(nèi)答復(fù)您學(xué)習(xí)IT中遇到的專(zhuān)業(yè)問(wèn)題。讀者也可以通過(guò)掃描下方的二維碼,關(guān)注千問(wèn)千知微信公眾平臺(tái),瀏覽其他學(xué)習(xí)者在學(xué)習(xí)中分享的問(wèn)題和收獲。
(2) 學(xué)習(xí)太枯燥,想了解其他學(xué)校的伙伴都是怎樣學(xué)習(xí)的?你可以加入扣丁俱樂(lè)部。扣丁俱樂(lè)部是千鋒教育聯(lián)合各大校園發(fā)起的公益計(jì)劃,專(zhuān)門(mén)面向?qū)T有興趣的大學(xué)生提供免費(fèi)的學(xué)習(xí)資源和問(wèn)答服務(wù),已有超過(guò)30多萬(wàn)名學(xué)習(xí)者獲益。
就業(yè)難,難就業(yè),千鋒教育讓就業(yè)不再難!
千問(wèn)千知
關(guān)于本教材
本書(shū)既可作為高等院校本、專(zhuān)科計(jì)算機(jī)相關(guān)專(zhuān)業(yè)學(xué)習(xí)Python爬蟲(chóng)技術(shù)的教材,也可作為計(jì)算機(jī)Python爬蟲(chóng)的培訓(xùn)教材,其中包含了千鋒教育Python爬蟲(chóng)課程的精彩內(nèi)容,是一本適合廣大計(jì)算機(jī)編程愛(ài)好者的優(yōu)秀讀物。
千 鋒 學(xué) 科
HTML5前端開(kāi)發(fā)、Java EE分布式開(kāi)發(fā)、Python全棧 人工智能、全鏈路UI/UE設(shè)計(jì)、智能物聯(lián)網(wǎng) 嵌入式、360網(wǎng)絡(luò)安全學(xué)院、大數(shù)據(jù) 人工智能培訓(xùn)、全棧軟件測(cè)試、PHP全棧 服務(wù)器集群、云計(jì)算 信息安全、Unity游戲開(kāi)發(fā)、區(qū)塊鏈。
千 鋒 校 區(qū)
北京|大連|廣州|成都|杭州|長(zhǎng)沙|哈爾濱|南京|上海|深圳|武漢|鄭州|西安|青島|重慶|太原
搶紅包
本書(shū)配套源代碼、習(xí)題答案的獲取方法: 添加小千QQ號(hào)或微信號(hào)2133320438。
注意!小千會(huì)隨時(shí)發(fā)放助學(xué)金紅包。
致謝
本教材由千鋒教育高教產(chǎn)品研發(fā)團(tuán)隊(duì)組織編寫(xiě),大家在這近一年里翻閱了大量Python爬蟲(chóng)圖書(shū),并從中找出它們的不足,通過(guò)反復(fù)修改最終完成了這本著作。另外,多名院校老師也參與了教材的部分編寫(xiě)與指導(dǎo)工作,除此之外,千鋒教育500多名學(xué)員也參與到了教材的試讀工作中,他們站在初學(xué)者的角度對(duì)教材提供了許多寶貴的修改意見(jiàn),在此一并表示衷心的感謝。
意 見(jiàn) 反 饋
在本書(shū)的編寫(xiě)過(guò)程中,雖然力求完美,但難免有一些不足之處,歡迎各界專(zhuān)家和讀者朋友們提出寶貴意見(jiàn),聯(lián)系方式: huyaowen@1000phone.com。
千鋒教育高教產(chǎn)品研發(fā)部
2019年6月于北京
胡耀文,清華大學(xué)出版社技術(shù)編審委員會(huì)委員,2009年參與國(guó)慶60周年官兵電子紀(jì)念冊(cè)項(xiàng)目,CSDN著名技術(shù)專(zhuān)家,博客瀏覽量超過(guò)1460350次,2012年7月 出版Windows CE 7開(kāi)發(fā)實(shí)戰(zhàn)詳解,2013年5月出版Windows8開(kāi)發(fā)權(quán)威指南,2014年--2016年連續(xù)三年獲得微軟全球MVP最有價(jià)值專(zhuān)家。 尹成,畢業(yè)于清華大學(xué),微軟全球最具價(jià)值專(zhuān)家,資深軟件架構(gòu)師,CSDN著名技術(shù)專(zhuān)家,微軟-清華大學(xué)聯(lián)合實(shí)驗(yàn)室技術(shù)顧問(wèn),清華大學(xué)移動(dòng)互聯(lián)網(wǎng)技術(shù)協(xié)會(huì)顧問(wèn),清華大學(xué)Oracle-java創(chuàng)始人,清華大學(xué)Google技術(shù)俱樂(lè)部創(chuàng)始人 ,清華大學(xué)Linux技術(shù)俱樂(lè)部創(chuàng)始人。精通java,C/C ,對(duì)于移動(dòng)3G,語(yǔ)音技術(shù),javaEE,信息安全,大數(shù)據(jù)高并發(fā)都有豐富的開(kāi)發(fā)經(jīng)驗(yàn)。2010年著書(shū)《Visual C 2010開(kāi)發(fā)權(quán)威指南》,版權(quán)作為大陸的驕傲輸出臺(tái)灣香港新加坡,代表大陸C 超越并引領(lǐng)臺(tái)灣[4-5] 。2013年著
目錄
第1章Python網(wǎng)絡(luò)爬蟲(chóng)入門(mén)
1.1所需技能與Python版本
1.1.1所需技術(shù)能力
1.1.2選擇Python的原因
1.1.3選擇Python 3.x的原因
1.2初識(shí)網(wǎng)絡(luò)爬蟲(chóng)
1.2.1網(wǎng)絡(luò)爬蟲(chóng)的概念
1.2.2網(wǎng)絡(luò)爬蟲(chóng)的應(yīng)用
1.2.3Robots協(xié)議
1.3搜索引擎核心
1.4快速爬取網(wǎng)頁(yè)示例
1.5本章小結(jié)
1.6習(xí)題
第2章爬蟲(chóng)基礎(chǔ)知識(shí)
2.1Cookie的使用
2.1.1Cookie的概念
2.1.2使用Cookiejar處理Cookie
2.2正則表達(dá)式
2.2.1正則表達(dá)式的概念
2.2.2正則表達(dá)式詳解
2.3標(biāo)記語(yǔ)言
2.4XPath
2.5JSON
2.6BeautifulSoup
2.6.1安裝BeautifulSoup
2.6.2BeautifulSoup的使用
2.7本章小結(jié)
2.8習(xí)題
第3章urllib與requests
3.1urllib庫(kù)
3.1.1urllib庫(kù)的概念
3.1.2urllib庫(kù)的使用
3.2設(shè)置HTTP請(qǐng)求方法
3.2.1GET請(qǐng)求實(shí)戰(zhàn)
3.2.2設(shè)置代理服務(wù)
3.3異常處理
3.3.1URLError異常處理
3.3.2HTTPError異常處理
3.4requests庫(kù)
3.4.1安裝requests庫(kù)
3.4.2發(fā)送請(qǐng)求
3.4.3響應(yīng)接收
3.4.4會(huì)話對(duì)象
3.5本章小結(jié)
3.6習(xí)題
第4章網(wǎng)絡(luò)爬蟲(chóng)實(shí)例
4.1圖片爬蟲(chóng)實(shí)例
4.2鏈接爬蟲(chóng)實(shí)例
4.3文字爬蟲(chóng)實(shí)例
4.4微信文章爬蟲(chóng)
4.5多線程爬蟲(chóng)及實(shí)例
4.6本章小結(jié)
4.7習(xí)題
第5章數(shù)據(jù)處理
5.1存儲(chǔ)HTML正文內(nèi)容
5.1.1存儲(chǔ)為JSON格式
5.1.2存儲(chǔ)為CSV格式
5.2存儲(chǔ)媒體文件
5.3Email提醒
5.4pymysql模塊
5.5本章小結(jié)
5.6習(xí)題
第6章數(shù)據(jù)庫(kù)存儲(chǔ)
6.1SQLite
6.1.1SQLite介紹
6.1.2安裝SQLite
6.1.3Python與SQLite
6.1.4創(chuàng)建SQLite表
6.1.5添加SQLite表記錄
6.1.6查詢SQLite表記錄
6.1.7更新SQLite表記錄
6.1.8刪除SQLite表記錄
6.2MongoDB
6.2.1MongoDB簡(jiǎn)介
6.2.2MongoDB適用場(chǎng)景
6.2.3MongoDB的安裝
6.2.4MongoDB基礎(chǔ)
6.2.5在Python中操作MongoDB
6.3Redis
6.3.1Redis簡(jiǎn)介
6.3.2Redis適用場(chǎng)景
6.3.3Redis的安裝
6.3.4Redis數(shù)據(jù)類(lèi)型與操作
6.3.5在Python中操作Redis
6.4本章小結(jié)
6.5習(xí)題
第7章抓取動(dòng)態(tài)網(wǎng)頁(yè)內(nèi)容
7.1JavaScript簡(jiǎn)介
7.1.1JS語(yǔ)言特性
7.1.2JS簡(jiǎn)單示例
7.1.3JavaScript庫(kù)
7.1.4Ajax簡(jiǎn)介
7.2爬取動(dòng)態(tài)網(wǎng)頁(yè)的工具
7.2.1Selenium庫(kù)
7.2.2PhantomJS瀏覽器
7.2.3Firefox的headless模式
7.2.4Selenium的選擇器
7.2.5Selenium等待方式
7.2.6客戶端重定向
7.3爬取動(dòng)態(tài)網(wǎng)頁(yè)實(shí)例
7.4本章小結(jié)
7.5習(xí)題
第8章瀏覽器偽裝與定向爬取
8.1瀏覽器偽裝介紹
8.1.1抓包工具Fiddler
8.1.2瀏覽器偽裝過(guò)程分析
8.1.3瀏覽器偽裝技術(shù)實(shí)戰(zhàn)
8.2定向爬蟲(chóng)
8.2.1定向爬蟲(chóng)分析
8.2.2定向爬蟲(chóng)實(shí)戰(zhàn)
8.3本章小結(jié)
8.4習(xí)題
第9章初探Scrapy爬蟲(chóng)框架
9.1了解爬蟲(chóng)框架
9.1.1初識(shí)Scrapy框架
9.1.2初識(shí)Crawley框架
9.1.3初識(shí)Portia框架
9.1.4初識(shí)Newspaper框架
9.2Scrapy介紹
9.2.1安裝Scrapy
9.2.2Scrapy程序管理
9.2.3Scrapy項(xiàng)目的目錄結(jié)構(gòu)
9.3常用命令
9.3.1Scrapy全局命令
9.3.2Scrapy項(xiàng)目命令
9.3.3Scrapy的Item對(duì)象
9.4編寫(xiě)Spider程序
9.4.1初識(shí)Spider
9.4.2Spider文件參數(shù)傳遞
9.5Spider反爬蟲(chóng)機(jī)制
9.6本章小結(jié)
9.7習(xí)題
第10章深入Scrapy爬蟲(chóng)框架
10.1Scrapy核心架構(gòu)
10.2Scrapy組件詳解
10.3Scrapy數(shù)據(jù)處理
10.3.1Scrapy數(shù)據(jù)輸出
10.3.2Scrapy數(shù)據(jù)存儲(chǔ)
10.4Scrapy自動(dòng)化爬取
10.4.1創(chuàng)建項(xiàng)目并編寫(xiě)items.py
10.4.2編寫(xiě)pipelines.py
10.4.3修改settings.py
10.4.4編寫(xiě)爬蟲(chóng)文件
10.4.5執(zhí)行自動(dòng)化爬蟲(chóng)
10.5CrawlSpider
10.5.1創(chuàng)建CrawlSpider
10.5.2LinkExtractor
10.5.3CrawlSpider部分源代碼分析
10.5.4實(shí)例CrawlSpider
10.6本章小結(jié)
10.7習(xí)題
第11章Scrapy實(shí)戰(zhàn)項(xiàng)目
11.1文章類(lèi)項(xiàng)目
11.1.1需求分析
11.1.2實(shí)現(xiàn)思路
11.1.3程序設(shè)計(jì)
11.1.4請(qǐng)求分析
11.1.5循環(huán)網(wǎng)址
11.1.6爬蟲(chóng)運(yùn)行
11.2圖片類(lèi)項(xiàng)目
11.2.1需求分析
11.2.2實(shí)現(xiàn)思路
11.2.3程序設(shè)計(jì)
11.2.4項(xiàng)目實(shí)現(xiàn)
11.3登錄類(lèi)項(xiàng)目
11.3.1需求分析
11.3.2實(shí)現(xiàn)思路
11.3.3程序設(shè)計(jì)
11.3.4項(xiàng)目實(shí)現(xiàn)
11.4本章小結(jié)
11.5習(xí)題
第12章分布式爬蟲(chóng)
12.1簡(jiǎn)單分布式爬蟲(chóng)
12.1.1進(jìn)程及進(jìn)程間通信
12.1.2簡(jiǎn)單分布式爬蟲(chóng)結(jié)構(gòu)
12.1.3控制節(jié)點(diǎn)
12.1.4爬蟲(chóng)節(jié)點(diǎn)
12.2Scrapy與分布式爬蟲(chóng)
12.2.1Scrapy中集成Redis
12.2.2MongoDB集群
12.3Scrapy分布式爬蟲(chóng)實(shí)戰(zhàn)
12.3.1創(chuàng)建爬蟲(chóng)
12.3.2定義Item
12.3.3爬蟲(chóng)模塊
12.3.4編寫(xiě)Pipeline
12.3.5修改Settings
12.3.6運(yùn)行項(xiàng)目
12.4去重優(yōu)化
12.5本章小結(jié)
12.6習(xí)題