易燃物匯聚 YouTube 有聲書與書評
Python爬蟲開發:從入門到實戰(微課版) 封面

Python爬蟲開發:從入門到實戰(微課版)

謝乾坤

4.3萬人在讀
20.1萬字總字數
¥29.99定價

內容簡介

本書較爲全面地介紹了定向爬蟲的開發過程、各種反爬蟲機制的破解方法和爬蟲開發的相關技巧。全書共13章,包括緒論、Python基礎、正則表達式與文件操作、簡單的網頁爬蟲開發、高性能HTML內容解析、Python與數據庫、異步加載與請求頭、模擬登錄與驗證碼、抓包與中間人爬蟲、Android原生App爬蟲、Scrapy、Scrapy應用、爬蟲開發中的法律和道德問題等。除第 1、12、13章外的其他章末尾都有動手實踐,以幫助讀者鞏固本章和前面章節所學的內容。

讀者書評

★★★★★

還不錯的一本書,前幾章對於打基礎很好,讓我明白了爬蟲的流程,也能完成練習網站裏的案例。但是由於編寫時間比較早,後續的內容有些過時,基本爬不出來了,書也講的不清楚,建議找更新一點的資料。 總之還是比較推薦的

★★★★★

很有意思,看了之後有種想把所有網站都爬取一遍的感覺,從中瞭解到了很多的知識,比如中間人攻擊,各種工具的使用,多學友誼,萬一那一天就用上了呢

★★★★★

如作者所言,爬蟲算是一門雜學。爬的目的是爲了獲取數據,只要能拿到數據,什麼方法都可以用,當然最好不要違法。爲了拿別人的數據,避開各種反爬蟲限制,全世界很多人孜孜不倦的開發並貢獻出了很多庫供爬蟲使用,可謂是道高一尺魔高一丈。不過,這也側面反映出世界對數據的需求十分強烈,公開無關商業祕密的數據,算是公衆的願望。因爲只爲爬數據,需求簡單,所以編程的邏輯也就簡單了很多,學會熟練使用這些庫的常用方法就好了,這個需要大量實踐。本書邏輯清楚,算是一本很好的入門教程。

★★★★★

2019-29:喜歡看有詳細代碼的技術書,對僅入門非精通的我很有幫助。

★★★☆☆

這是我看的第一本有關爬蟲的書,一臉懵的進來,最終結合AI還是學到了不少東西。客觀的說2026年,已經有了已經有了playwright、ai 大模型的加持,整本書大部分內容不太適合。個人以爲就圍繞幾點來,控制好時間還是會有收穫 : 1. 書中提供了一個練習的網站,可以做測試,非常棒 2. 詳細講了瀏覽器開發模式的一些操作,結合大模型一定要琢磨明白 3. 書中內容,重點看看Request、lXML相關的即可

★★★★★

我是這本書的作者,希望下面這篇文章,能夠讓你對學習爬蟲有所憧憬。 序言 這篇文章沒有代碼,請放心閱讀。 多年以後,面對人工智能研究員那混亂不堪的代碼,我會想起第一次和S君相見的那個遙遠的下午。那時的B公司,還是一個僅有6個人的小團隊,Mac和顯示器在桌上依次排開,大家坐在一起,不需要稱呼姓名,轉過臉去,對方就知道你在和他說話。一切看起來都那麼美好,我們所有人,都希望自己和這個公司能夠一起成長。 彼時S君剛從加拿大回來,老闆把他介紹給我們,於是S君作爲數據產品經理跟我有了項目上的接觸。 創業公司裏面,每一個人都需要會很多的技藝,於是S君開始自學Python。 有一天,S君問我:“你玩MineCraft嗎?“ “玩,但我更喜歡在B站上看別人的世界。”我答道。 “我覺得我現在寫程序,像是在玩我的世界。”S君笑着說道。 “是不是覺得你已經掌握了Python的基本語法,看着別人把Python用的溜溜轉,而你自己卻不知道用它來做什麼?” “是這樣的,你懂我。” “那你學一門雜學吧。” 於是S君被我誘拐過來跟我一起寫爬蟲。 後來,S君離開了B公司。 三個月後,我也離開了。 從此,我們再也沒有見過。 編程最重要的能力是變通 S君是一個老實孩子。 在開發一個爬蟲的過程中,網站接口返回給他的數據看起來是JSON格式,於是他就用Python自帶的JSON庫去解析。結果解析失敗了。因爲這些所謂的看起來像JSON的東西,竟然沒有雙引號。 難道是JSON的超集?S君一通搜索,發現用YMAL庫也許可以解析這種數據。於是安裝YMAL庫,一解析又報錯。 難道這些數據直接就是Python的字典?於是S君用上了邪惡的eval。又報錯,因爲裏面有null和小寫的true。 “你爲什麼不試一試直接用正則表達式呢?”我對S君說。 “靠!”S君一拍桌子,旁邊的老闆嚇得把搪瓷杯子裏面的快樂水灑在了白襯衣上。 然後S君用正則表達式花了10秒鐘結束了戰鬥。 寫爬蟲與三峽大壩 有一天,S君興沖沖地跑來跟我說:“我體會到三峽大壩的偉大功能了!” “你是爬蟲工程師還是水利工程師?” “你知道嗎,不管上游的水勢多麼兇猛,從大壩出來以後總是安全而穩定。”S君並沒有回答我的問題,而是自顧自地說道。 “原來你開始用Kafka。不錯,孺子可教。” S君吐了一下舌頭:“還是師傅教導有方。” 前不久,S君的爬蟲剛剛達到了日產數據千萬條的目標。然而他只高興了一天。因爲他發現,數據寫到數據庫以後,讀起來很麻煩。 S君有多個數據分析的系統需要從數據庫裏面讀取爬蟲爬好的數據,但是從每天千萬量級的數據中尋找特定的數據是一個很慢的過程。如果程序遇到異常導致崩潰,又得從頭開始讀。 S君問我:“現在我每一個數據分析的腳本都要從數據庫裏面讀一次數據,做了太多重複的工作,單機單節點的數據庫快要撐不住了。我是不是要去學習分庫分表搭建集羣啊?” 我告訴S君:“這個後面你自然是需要去做的。但現在,你可以先試一試Kafka,我已經搭建好了一個Kafka的集羣了,你這樣使用……”。 後來,S君讓所有爬蟲把爬到的數據到直接送進了Kafka,然後再從Kafka裏面讀數據出來,一個Group用來備份原始數據,一份Group用來生成中間表,一份Group用來監控報警,一份Group用來繪製DashBoard。無論爬蟲塞給Kafka的數據有多少,有多快,從Kafka讀數據的地方都能按照自己的節奏來消費和使用。 既然收集了數據就要讓它發光發熱 S君在加拿大留學時學的專業是金融數學和統計。所以他對數據分析也很有興趣。在他爬蟲收集的數據夠用以後,我跟他講了如何使用Pandas來分析數據。 S君把他分析的酒店價格變化數據給分享給了我們。不愧是金融+數學+統計學背景的高級知識分子+超級強大的Pandas+超級好用的Jupyter。這份數據不僅完美再現了過去一年的價格走勢,還預測了未來的任何變化,多達四十六張圖表似乎窮盡了所有的組合。 草木竹石皆可破敵 S君曾經遇到過一個特別簡單的電商網站。頁面幾乎像素級抄襲淘寶,但是完全沒有任何反爬蟲的機制。以S君的水平,從審查元素,到開發完成,僅僅用了半個小時。爬蟲安全平穩又順利地運行了三個星期。 然後,有一天早上,爬蟲死掉了。 S君用盡畢生所學,無法再從這個網站上爬到任何有價值的信息。這個網站似乎請來了一個機器行爲對抗的大神級人物。人用瀏覽器一點問題都沒有,但S君的任何隱藏爬蟲的手段都被輕易識破。 S君找到我:“師傅,這個網站我搞不定。” “你能搞定。動動腦子。” “我會的所有技術都用上了,完全看不出破解他反爬蟲機制的方法。”S君已經失去了信心。 “那就,不要用技術去對抗。用你的腦子。” S君抱着顯示器用頭一遍一遍的撞。 我問S君:“你有沒有思考一個問題,這個網站模仿了淘寶的皮,卻又毫無反爬蟲機制。你覺得他的老闆是一個什麼樣的人?你聽過那個段子嗎?” S君突然一躍而起:“我給你一萬元,你幫我做一個網站吧。你想要什麼樣的網站?很簡單,就淘寶那樣的。你是說這個段子嗎?” “對。” S君突然之間榮光煥發:“有辦法了!” 只見S君重新在瀏覽器打開了這個網站,找到了客戶服務熱線。電話一撥通他就開始一通污言穢語罵起來:“……你們網站到底在搞什麼?爲什麼今天一會能登錄一會不能登錄?找你們老闆來!我來教他怎麼做網站!……” 半小時以後,網站反爬蟲機制全部解除。 此刻,S君面向西面雙手合十,自言自語:“兄弟,對不起了,只有讓你來背這個鍋了。” 你小學上課傳過紙條嗎 “我現在能體會那些半路攔截紙條的人是什麼心態了。”這是S君第一次使用Charles時對我說的話。 從此以後,我很少看到S君分析網頁了。因爲他學會了在爬蟲開發的過程中,首先通過中間人攻擊技術分析微信小程序和手機App。這種方式往往能夠直接獲得數據,拿到數據以後就能直接儲存,再也不用寫煩人的XPath或者長的跟表情符號一樣的正則表達式了。 有一天,我在玩一個網頁版的黑客解密遊戲,在網頁上尋找某個地方隱藏起來的密碼,然後輸入每一關的回答框中,答對才能進入下一關。 遊戲有12關,而我卡在了第6關。只見S君拿着電腦走到我面前,指着第12關的通關頁面跟我炫耀。 “你是不是用MITMProxy替換了這個網站的Js文件?” “果然還是瞞不過師傅你啊。” “你攔截了別人的紙條,做了修改,然後又疊好繼續傳下去,你有考慮過發紙條的人和收紙條的人的感受嗎?” “我小學時候不傳紙條,都是妹子直接約我的。” 加密?不存在的 “前端沒有祕密”。S君在成功逆向了一個網站的Js文件以後如是對我說。 “那是因爲這個網站的Js代碼就赤裸裸地放在你面前,完全沒有混淆。”我對S君說道。 “不怕,我可以用Node.js來運行混淆過的代碼。我已經搭建好Node.js服務了,只要把Js代碼傳進去,他就會把結果給我返回回來。”S君對此似乎一臉自行。 “你什麼時候學會的Node.js?” “這不是師傅你說過技多不壓身嗎?既然做爬蟲需要動JavaScript,那我順手就把Node.js給學了。”S君毫不畏懼的表情,似乎證明他已經猜透了我要問什麼。 “那如果目標沒有網站,只有App呢?” “不怕,Android逆向工程我也順便研究了一點。Java我也看得懂。” “看來這些已經不需要我再教你了。” 我一根指頭就能捏死你,但我不想傷害你 S君有一天問我:“假設你現在在小學課堂上,前面的同學讓你把紙條傳給後面的女生,你會怎麼做?” 我說:“查看複製/修改刪除/攔截丟棄”。 S君嘿嘿一笑:“比如說,前後三次的紙條分別爲‘聽說你奶奶生病了,我們週末一起去看望她吧‘,’今晚我爸媽不在,去我家玩嗎?’,‘我剛拿到這個月壓歲錢,老師一下課我們就去喫好喫的。’” 我說:“女孩漂亮的話,我改一下第二張紙條,改成‘今晚我爸媽不在,我們一起去青南家玩嗎?’”。 S君露出了嫌棄的眼神:“師傅,你可是說過你最討厭技術含量低的事情啊,你塗改了紙條,別人不會發現?你筆跡都不一樣啊!”。 我問S君:“那你有何高見?” S君抬頭仰望這窗外的天空:“如果是我,那麼我會臨摹第一張紙條上面的`生病了``去看望``她``我`,第二張紙條上面的`爸媽`,第三張紙條上面的`拿``錢``老師`這些字的筆跡。然後改換一下順序就變成了:`爸媽,我老師生病了,我拿錢去看望她`。最後我把這張僞造的紙條拿去找寫紙條的那個同學他爸媽要錢。” “我猜,你想用中間人攻擊截取別人的Cookies,然後用這些Cookies偷偷登錄網站,進行你的不可告人的目的。” S君笑道:“哈哈哈,我想想都害怕。但是每當我想到,我擁有一種可怕的力量,而我還能控制住這種力量。我就知道我和街上的普通人不一樣了。” 你肯定薅了直播答題的羊毛吧 去年年底的直播答題着實火了一把。那個時候,我和S君分開已經有一段時間了。我相信,在全民答題的每一個夜晚,S君的電腦上一定連着不少於六臺安卓手機。這些手機運行着不同的答題平臺,能夠自動讀取屏幕上的問題並自動選擇答案。 我把安卓自動化測試技術教給S君,本來是讓他結合爬蟲,實現羣控從而抓取一些難以處理的數據,但我相信他肯定會用來答題。 變通,這一點他學的越來越好了。 只希望他不要成爲羊毛黨。 後記 後來,我再也沒有見過S君這樣有趣的人。所以我把我教給S君的東西,寫成了一本書:《Python爬蟲開發從入門到實戰》。 爬蟲是一門雜學。因爲在一個完整的開發過程中,需要涉及到的知識可以包括但不限於:Python,HTML,JavaScript,正則表達式,XPath,數據庫,Redis,消息隊列,Docker,ELK,Hadoop,數據分析,ETL,中間人攻擊,自動化測試技術,可視化…… 這其中的任何一項,在一個大公司裏面都可以讓很多人來做。 爬蟲開發,就像這篇文章裏面反覆出現的一個詞:變通——只要能夠獲得數據,任何技術都可以使用。所謂草木竹石皆可爲劍。爬蟲不應該是一個枯燥的一成不變的模式化的工作。而是一個充滿了創意和挑戰,能夠讓旁觀者大呼“我X還能這樣搞”的工作。 爬蟲開發,絕對不僅僅是Scrapy,PySpider,requests這些框架或者庫的使用。所以在這本書裏面,我也刻意減少了框架使用說明的部分,而把重點放在了各種突破反爬蟲機制或者使用變通的方法繞過反爬蟲機制的方法論和實踐中。 通過學習爬蟲,你最後不一定選擇爬蟲工程師這個崗位,但是在學習爬蟲的過程中,你將會接觸到的各種工具,方法,服務組件,都會在你以後的生活和工作中幫到你,讓你知道,在遇到一個問題的時候,解決方法在哪個地方。

★★★★★

2020/12/16讀完,歷時6.5小時。第一次閱讀爬蟲類書籍,前面幾章還好,雖然給的案例很簡要,勉強能看懂,第10,11,12章,感覺就是難,可能是書籍說的內容太跳躍,基本就看得一頭霧水,第13章概述法律,這個符合本專業,一點問題沒有。和以前新入門一個專業時很像,第一次閱讀時,感覺就是略懂,半懂,後面一頭霧水,多看幾次,多練習幾次,多看幾本這類書籍,再多看下被人寫的功能代碼,應該可以基本掌握。再等我看完官方的全英文解釋文檔,估計爬蟲就可以略微鞏固了。

★★★★★

下面是作者的原話,可是很精準的表達了我對這本書的總結思考,非常不錯。只是對框架部分的原理、使用介紹確實寫的比較少。可惜,只能看別的書了。 爬蟲是一門雜學。因爲在一個完整的開發過程中,需要涉及到的知識可以包括但不限於:Python,HTML,JavaScript,正則表達式,XPath,數據庫,Redis,消息隊列,Docker,ELK,Hadoop,數據分析,ETL,中間人攻擊,自動化測試技術,可視化…… 這其中的任何一項,在一個大公司裏面都可以讓很多人來做。 爬蟲開發,就像這篇文章裏面反覆出現的一個詞:變通——只要能夠獲得數據,任何技術都可以使用。所謂草木竹石皆可爲劍。爬蟲不應該是一個枯燥的一成不變的模式化的工作。而是一個充滿了創意和挑戰,能夠讓旁觀者大呼“我X還能這樣搞”的工作。 爬蟲開發,絕對不僅僅是Scrapy,PySpider,requests這些框架或者庫的使用。所以在這本書裏面,我也刻意減少了框架使用說明的部分,而把重點放在了各種突破反爬蟲機制或者使用變通的方法繞過反爬蟲機制的方法論和實踐中。 通過學習爬蟲,你最後不一定選擇爬蟲工程師這個崗位,但是在學習爬蟲的過程中,你將會接觸到的各種工具,方法,服務組件,都會在你以後的生活和工作中幫到你,讓你知道,在遇到一個問題的時候,解決方法在哪個地方。

★★★★★

這是本人進入編程世界的第一本書。 只會aoe,不熟abc。因爲喜歡而學習,讓我打開了另一扇窗戶。原來編程的世界,是如此美好,好到可以忘記世間的一切,在'0,1'的世界中,任意翱翔。 讀了兩遍,還不會寫代碼,但信心已有了,相信自己可以做得更好。 print('Hell ,world')

★★★★★

看的第一本Python開發的書,關鍵不是看怎麼寫代碼,而是學習作者如何處理開發中的問題,借鑑其思路! 全書內容不囉嗦,思路清晰,對爬蟲的運行機制,各種突防策略都講的很不錯,非常適合想了解爬蟲的人士閱讀,最好是有一定的編程基礎。 閱讀本書讓我對爬蟲有了更多的認識,也學到了很多的技巧,希望大家也都能有所收穫!

書籍信息

作者謝乾坤
出版社人民郵電出版社
出版時間2018-09-01
ISBN9787115490995
分類計算機-編程設計
格式EPUB
完結狀態連載中
章節數86