學(xué)習(xí) Python 爬蟲,手把手通過 Python 入門爬取網(wǎng)頁信息

Python 爬蟲是什么?
我們?cè)诰W(wǎng)絡(luò)上收集資料的過程其實(shí)就稱之為爬蟲(web scraping)。復(fù)制粘貼歌詞、摘抄文本或數(shù)據(jù)都可以算作爬蟲的一部分,但網(wǎng)絡(luò)編程背景下的爬蟲,更強(qiáng)調(diào)自動(dòng)化,通過 Python 編程實(shí)現(xiàn)自動(dòng)爬取資源,從而減少人力資源與精力消耗,提高效率。

注:在動(dòng)手爬蟲之前,程序員們還是需要考慮一些法律相關(guān)的問題。一般而言,開源或教育相關(guān)用途的爬蟲并不會(huì)觸及法律問題,但若用作其他商業(yè)用途或涉及一些敏感事物,爬蟲也可能涉及違反服務(wù)條款甚至其他法律糾紛。同樣地,有些網(wǎng)站也會(huì)避免爬蟲而通過其他手段提高安全門檻。
在法律允許的范圍內(nèi),學(xué)習(xí)使用 Python 實(shí)現(xiàn)自動(dòng)化爬蟲能讓大家在資訊紛雜的網(wǎng)絡(luò)世界中,快速地收集自己所需的資料。這篇文章將通過虛構(gòu)的求職網(wǎng)站 Fake Python 以及使用 Lightly 展示完整的項(xiàng)目代碼,引導(dǎo)大家在無需安裝第三方軟件的情況下,動(dòng)手在瀏覽器中編寫代碼,了解 Python 爬蟲。

Lightly 爬蟲項(xiàng)目代碼
https://538cd3972a-share.lightly.teamcode.com
了解網(wǎng)站的基礎(chǔ)結(jié)構(gòu)
在開始編寫 Python 代碼前,合格的程序員還是需要具備基礎(chǔ)的網(wǎng)頁知識(shí)。在這里打開教程中所使用的網(wǎng)頁:https://realpython.github.io/fake-jobs/
右鍵點(diǎn)擊“查看頁面源代碼”,打開后將展示網(wǎng)頁的 HTML 代碼。
除了右鍵查看外,使用 Windows 的同學(xué)也可以通過 Ctrl + Shift + I (MacOS: Cmd + Alt + I)的方式調(diào)動(dòng)開發(fā)人員工具,在“元素”中查看源代碼。使用開發(fā)人員工具可以折疊或展開代碼,也可以根據(jù)鼠標(biāo)懸浮展示代碼在網(wǎng)頁中所對(duì)應(yīng)的內(nèi)容。

在 Python 爬蟲中,同學(xué)們無需被紛亂的 HTML 代碼勸退。一般而言,我們可以關(guān)注 id / class 等元素,從中找到對(duì)應(yīng)的分組,即可借用 Python 和 Lightly IDE,從這些代碼中分析出我們所需的內(nèi)容。
先行準(zhǔn)備:安裝 requests 及 BeautifulSoup 庫
初次使用 Lightly 或此前未安裝 requests 及 bs4 庫的同學(xué),在開始編寫項(xiàng)目代碼前需在終端通過 pip install requests 以及 pip install bs4 分別安裝依賴。

若此前忘了安裝,使用 Lightly 的同學(xué)也可以通過 QuickFix 的方式,一鍵安裝缺失依賴。

手把手實(shí)操 Python 爬蟲
通過 Lightly 快照中的 Python 項(xiàng)目代碼,復(fù)制到個(gè)人項(xiàng)目中進(jìn)行學(xué)習(xí):https://538cd3972a-share.lightly.teamcode.com
如何打開并編輯他人用 Lightly 分享的項(xiàng)目?

注:快照復(fù)制到個(gè)人項(xiàng)目后,任何修改都不會(huì)影響到原本的快照鏈接,同學(xué)們可放心對(duì)自己的代碼進(jìn)行修改,也可以隨時(shí)通過快照鏈接再次查看源代碼。
Lightly Python 爬蟲實(shí)操項(xiàng)目代碼中,分成多個(gè)章節(jié)通過代碼中的注釋講解 BeautifulSoup 中的各個(gè)元素。

完成學(xué)習(xí)后的輸出效果如下:

爬蟲的挑戰(zhàn)
此次爬蟲中所使用的練習(xí)網(wǎng)站較為簡(jiǎn)單,但也展示了基礎(chǔ) Python 爬蟲中需要具備的知識(shí)與應(yīng)用?,F(xiàn)實(shí)使用的網(wǎng)頁或許會(huì)比練習(xí)中的網(wǎng)頁更為復(fù)雜,不同編程人員所使用的編程語言、風(fēng)格、安全系數(shù)等都有可能影響爬蟲的難易度。
此外,對(duì)于信息更新較為頻繁的網(wǎng)站而言,大家在學(xué)習(xí)爬蟲的過程中也有可能發(fā)現(xiàn)每次運(yùn)行的內(nèi)容都可能出現(xiàn)變化。若網(wǎng)站的改動(dòng)較大,過去所建立好的爬蟲代碼就有可能失效。因此,學(xué)習(xí) Python 爬蟲是一個(gè)常練常新的過程。在法律法規(guī)允許的范圍內(nèi),進(jìn)一步通過已習(xí)得的技巧多加練習(xí)與交流,才能真正地將爬蟲作為有利于自己的工具,增進(jìn)工作效率與個(gè)人能力。