- N +

python爬蟲快速入門,做一個簡單的python爬蟲

python爬蟲怎么做

大到各類搜索引擎,小到日常數(shù)據(jù)采集,都離不開網(wǎng)絡(luò)爬蟲。爬蟲的基本原理很簡單,遍歷網(wǎng)絡(luò)中網(wǎng)頁,抓取感興趣的數(shù)據(jù)內(nèi)容。這篇文章會從零開始介紹如何編寫一個網(wǎng)絡(luò)爬蟲抓取數(shù)據(jù),然后會一步步逐漸完善爬蟲的抓取功能。

工具安裝

我們需要安裝python,python的requests和BeautifulSoup庫。我們用Requests庫用抓取網(wǎng)頁的內(nèi)容,使用BeautifulSoup庫來從網(wǎng)頁中提取數(shù)據(jù)。

安裝python

運行pipinstallrequests

運行pipinstallBeautifulSoup

抓取網(wǎng)頁

完成必要工具安裝后,我們正式開始編寫我們的爬蟲。我們的第一個任務(wù)是要抓取所有豆瓣上的圖書信息。我們以https://book.douban.com/subject/26986954/為例,首先看看開如何抓取網(wǎng)頁的內(nèi)容。

使用python的requests提供的get()方法我們可以非常簡單的獲取的指定網(wǎng)頁的內(nèi)容,代碼如下:

提取內(nèi)容

抓取到網(wǎng)頁的內(nèi)容后,我們要做的就是提取出我們想要的內(nèi)容。在我們的第一個例子中,我們只需要提取書名。首先我們導(dǎo)入BeautifulSoup庫,使用BeautifulSoup我們可以非常簡單的提取網(wǎng)頁的特定內(nèi)容。

連續(xù)抓取網(wǎng)頁

到目前為止,我們已經(jīng)可以抓取單個網(wǎng)頁的內(nèi)容了,現(xiàn)在讓我們看看如何抓取整個網(wǎng)站的內(nèi)容。我們知道網(wǎng)頁之間是通過超鏈接互相連接在一起的,通過鏈接我們可以訪問整個網(wǎng)絡(luò)。所以我們可以從每個頁面提取出包含指向其它網(wǎng)頁的鏈接,然后重復(fù)的對新鏈接進行抓取。

通過以上幾步我們就可以寫出一個最原始的爬蟲。在理解了爬蟲原理的基礎(chǔ)上,我們可以進一步對爬蟲進行完善。

寫過一個系列關(guān)于爬蟲的文章:https://www.toutiao.com/i6567289381185389064/。感興趣的可以前往查看。

Python基本環(huán)境的搭建,爬蟲的基本原理以及爬蟲的原型

Python爬蟲入門(第1部分)

如何使用BeautifulSoup對網(wǎng)頁內(nèi)容進行提取

Python爬蟲入門(第2部分)

爬蟲運行時數(shù)據(jù)的存儲數(shù)據(jù),以SQLite和MySQL作為示例

Python爬蟲入門(第3部分)

使用seleniumwebdriver對動態(tài)網(wǎng)頁進行抓取

Python爬蟲入門(第4部分)

討論了如何處理網(wǎng)站的反爬蟲策略

Python爬蟲入門(第5部分)

對Python的Scrapy爬蟲框架做了介紹,并簡單的演示了如何在Scrapy下進行開發(fā)

Python爬蟲入門(第6部分)

Python爬蟲如何寫

Python的爬蟲庫其實很多,像常見的urllib,requests,bs4,lxml等,初始入門爬蟲的話,可以學(xué)習(xí)一下requests和bs4(BeautifulSoup)這2個庫,比較簡單,也易學(xué)習(xí),requests用于請求頁面,BeautifulSoup用于解析頁面,下面我以這2個庫為基礎(chǔ),簡單介紹一下Python如何爬取網(wǎng)頁靜態(tài)數(shù)據(jù)和網(wǎng)頁動態(tài)數(shù)據(jù),實驗環(huán)境win10+python3.6+pycharm5.0,主要內(nèi)容如下:

Python爬取網(wǎng)頁靜態(tài)數(shù)據(jù)

這個就很簡單,直接根據(jù)網(wǎng)址請求頁面就行,這里以爬取糗事百科上的內(nèi)容為例:

1.這里假設(shè)我們要爬取的文本內(nèi)容如下,主要包括昵稱、內(nèi)容、好笑數(shù)和評論數(shù)這4個字段:

打開網(wǎng)頁源碼,對應(yīng)網(wǎng)頁結(jié)構(gòu)如下,很簡單,所有字段內(nèi)容都可以直接找到:

2.針對以上網(wǎng)頁結(jié)構(gòu),我們就可以編寫相關(guān)代碼來爬取網(wǎng)頁數(shù)據(jù)了,很簡單,先根據(jù)url地址,利用requests請求頁面,然后再利用BeautifulSoup解析數(shù)據(jù)(根據(jù)標(biāo)簽和屬性定位)就行,如下:

程序運行截圖如下,已經(jīng)成功爬取到數(shù)據(jù):

Python爬取網(wǎng)頁動態(tài)數(shù)據(jù)

很多種情況下,網(wǎng)頁數(shù)據(jù)都是動態(tài)加載的,直接爬取網(wǎng)頁是提取不到任何數(shù)據(jù)的,這時就需要抓包分析,找到動態(tài)加載的數(shù)據(jù),一般情況下就是一個json文件(當(dāng)然,也可能是其他類型的文件,像xml等),然后請求解析這個json文件,就能獲取到我們需要的數(shù)據(jù),這里以爬取人人貸上面的散標(biāo)數(shù)據(jù)為例:

1.這里假設(shè)我們爬取的數(shù)據(jù)如下,主要包括年利率,借款標(biāo)題,期限,金額,進度這5個字段:

2.按F12調(diào)出開發(fā)者工具,依次點擊“Network”->“XHR”,F(xiàn)5刷新頁面,就可以找到動態(tài)加載的json文件,具體信息如下:

3.接著,針對以上抓包分析,我們就可以編寫相關(guān)代碼來爬取數(shù)據(jù)了,基本思路和上面的靜態(tài)網(wǎng)頁差不多,先利用requests請求json,然后再利用python自帶的json包解析數(shù)據(jù)就行,如下:

程序運行截圖如下,已經(jīng)成功獲取到數(shù)據(jù):

至此,我們就完成了利用python來爬取網(wǎng)頁數(shù)據(jù)。總的來說,整個過程很簡單,requests和BeautifulSoup對于初學(xué)者來說,非常容易學(xué)習(xí),也易掌握,可以學(xué)習(xí)使用一下,后期熟悉后,可以學(xué)習(xí)一下scrapy爬蟲框架,可以明顯提高開發(fā)效率,非常不錯,當(dāng)然,網(wǎng)頁中要是有加密、驗證碼等,這個就需要自己好好琢磨,研究對策了,網(wǎng)上也有相關(guān)教程和資料,感興趣的話,可以搜一下,希望以上分享的內(nèi)容能對你上有所幫助吧,也歡迎大家評論、留言。

想自己動手寫網(wǎng)絡(luò)爬蟲,但是不會python,可以么

網(wǎng)絡(luò)爬蟲只是一種按一定規(guī)則自動獲取互聯(lián)網(wǎng)數(shù)據(jù)的方式,不僅僅只是Python,其他編程語言,像Java、Php、Node等都可以輕松實現(xiàn),只不過相比較Python來說,開發(fā)工具包比較少而已,下面我簡單介紹一下學(xué)習(xí)Python爬蟲的過程,感興趣的朋友可以嘗試一下:

01

Python基礎(chǔ)

這里主要是針對沒有任何Python編程基礎(chǔ)的朋友,要學(xué)習(xí)Python爬蟲,首先,最基本的就是要掌握Python常見語法,包括變量、元組、字典、列表、函數(shù)、類、文件處理、正則表達式等,這個網(wǎng)上教程非常多,直接搜索就能找到,包括菜鳥教程、慕課網(wǎng)、網(wǎng)易云課堂等,花個三四天時間學(xué)習(xí)一下,非常容易入門,也好掌握:

02

爬蟲入門

Python基礎(chǔ)掌握差不多后,就是爬蟲入門,初學(xué)的話,可以使用urllib、requests、bs4、lxml等基礎(chǔ)爬蟲庫,簡單易學(xué),容易掌握,而且官方自帶有非常詳細的入門教程,非常適合初學(xué)者,對于爬取一些常見的web頁面或網(wǎng)站來說,可以說是手到擒來,非常簡單,先請求數(shù)據(jù),然后再解析就行:

03

爬蟲框架

爬蟲基礎(chǔ)掌握差不多后,就可以學(xué)習(xí)爬蟲框架了,比較流行的就是scrapy,一個免費、開源、跨平臺的Python爬蟲庫,在業(yè)界非常受歡迎,可定制化程度非常高,只需添加少量代碼就可輕松開啟一個爬蟲程序,相比較requests、bs4等基礎(chǔ)庫來說,可以明顯提高開發(fā)效率,避免重復(fù)造輪子,建議學(xué)習(xí)一下,非常不錯,很快你就會愛上這個框架:

目前就分享這3個方面吧,初學(xué)Python爬蟲的話,建議還是多看多練習(xí),以積累經(jīng)驗為主,后期熟悉后,可以結(jié)合pandas、matplotlib對數(shù)據(jù)做一些簡單的處理和可視化,網(wǎng)上也有相關(guān)教程和資料,介紹的非常詳細,感興趣的話,可以搜一下,希望以上分享的內(nèi)容能對你有所幫助吧,也歡迎大家評論、留言進行補充。

python入門就遇到反爬蟲技術(shù)了嗎

反爬不是分技術(shù)的,而是分網(wǎng)站的,且同一個網(wǎng)站不同內(nèi)容的難度也會截然不同,例如:你可以一天無限次爬蟲百度的主頁,他不會管你,但是你去爬百度指數(shù),你會發(fā)現(xiàn)你很難拿到他的數(shù)據(jù)(一般越核心的數(shù)據(jù)反爬越強)。

學(xué)習(xí)Python爬蟲需要多久

爬蟲需要掌握Python基礎(chǔ),re正則模塊,Beatifulsoup,pyquery,xpath,selenium,scrapy等一些知識點,能爬取任何網(wǎng)站,包括某寶,某東。建議先去一些Python網(wǎng)站學(xué)習(xí)基礎(chǔ)教程,然后再去深入學(xué)習(xí)python爬蟲。蟻小二python小課就不錯,零基礎(chǔ)也能學(xué)習(xí)。

爬蟲是什么為什么Python使用的比較多

首先您應(yīng)該明確,不止Python這一種語言可以做爬蟲,諸如PHP、Java、C/C++都可以用來寫爬蟲程序,但是相比較而言Python做爬蟲是最簡單的。下面對它們的優(yōu)劣勢做簡單對比:

PHP:對多線程、異步支持不是很好,并發(fā)處理能力較弱;Java也經(jīng)常用來寫爬蟲程序,但是Java語言本身很笨重,代碼量很大,因此它對于初學(xué)者而言,入門的門檻較高;C/C++運行效率雖然很高,但是學(xué)習(xí)和開發(fā)成本高。寫一個小型的爬蟲程序就可能花費很長的時間。

而Python語言,其語法優(yōu)美、代碼簡潔、開發(fā)效率高、支持多個爬蟲模塊,比如urllib、requests、Bs4等。Python的請求模塊和解析模塊豐富成熟,并且還提供了強大的Scrapy框架,讓編寫爬蟲程序變得更為簡單。因此使用Python編寫爬蟲程序是個非常不錯的選擇。

編寫爬蟲的流程

爬蟲程序與其他程序不同,它的的思維邏輯一般都是相似的,所以無需我們在邏輯方面花費大量的時間。下面對Python編寫爬蟲程序的流程做簡單地說明:

先由urllib模塊的request方法打開URL得到網(wǎng)頁HTML對象。使用瀏覽器打開網(wǎng)頁源代碼分析網(wǎng)頁結(jié)構(gòu)以及元素節(jié)點。通過BeautifulSoup或則正則表達式提取數(shù)據(jù)。存儲數(shù)據(jù)到本地磁盤或數(shù)據(jù)庫。

當(dāng)然也不局限于上述一種流程。編寫爬蟲程序,需要您具備較好的Python編程功底,這樣在編寫的過程中您才會得心應(yīng)手。爬蟲程序需要盡量偽裝成人訪問網(wǎng)站的樣子,而非機器訪問,否則就會被網(wǎng)站的反爬策略限制,甚至直接封殺IP,相關(guān)知識會在后續(xù)內(nèi)容介紹。

返回列表
上一篇:
下一篇: