首先,什麼是爬蟲?
網路蜘蛛(web spider)也叫網路爬蟲(web crawler)[1]爬蟲就是在網際網路中爬行的蜘蛛,它會遇到資源、選擇資源、抓取資源,這個過程就是爬蟲的全部。至於如何找到前進的路,如何選擇路線,如何自我保護,如何穿過障礙,這些以後再慢慢說。現在我們先完成最簡單的三步走,,螞蟻(ant),自動檢索工具(automatic indexer),或者(在foaf軟體概念中)網路疾走(web scutter),是一種「自動化
瀏覽網路
」的程式
,或者說是一種網路機械人
網路爬蟲
(又被稱為網頁蜘蛛
,網路機械人,在foaf
社群中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取全球資訊網
資訊的程式或者指令碼。另外一些不常使用的名字還有螞蟻
、自動索引、模擬程式或者蠕蟲
我們來看看這個簡單的功能通過python是如何實現的:
importurlopenurllib.request
response = urllib.request.urlopen('
')print(response.read())
你沒有看錯,這段**只有三行,它的執行效果如下:
這段**所做的是訪問python的官網,獲得**頁面的html資料,然後輸出在控制台。可以看到,我們只是通過很簡單的三行**就得到了乙個網頁的頁面內容。這個頁面就是我們的爬蟲所要搜尋的資源檔案。利用python,很簡單地我們就完成了這一步。
我們在上一步獲得了資源,但是我們拿到的是html檔案。對於瀏覽器而言,html檔案很友好,因為瀏覽器的渲染是基於此的。對於爬蟲來說(或者對於作為幕後**的我們來說),這樣的資源資訊冗餘太多了,相當一部分都不是我們想要的內容。python提供了很多的模組可以用來解析網頁,我們這裡先用乙個最方便的——beautifulsoup。
先簡單使用一下beautifulsoup模組,**如下:
import這段程式的輸出結果是urllib.request
from bs4 import
beautifulsoup
response = urllib.request.urlopen('
')bsobj =beautifulsoup(response.read())
print(bsobj.h1)
也就是知乎**的標題,我們可以用同樣的方法訪問網頁中的任一結構。
我們做爬蟲的目的不是為了讓它自己去遊蕩,我們需要的是抓取的資料,所以必須把結果儲存下來。常用的儲存方式無非就是檔案或者資料庫方式。檔案方式就是存為使用者可直接檢視的檔案,比如文字資訊存為文字,資訊直接儲存等等。當資料量很大,而且結構相對固定的時候,資料庫就是乙個很好的選擇。python也對各類資料庫都有相應的支援,非常方便。
我們這裡使用最簡單的文字儲存方式,如下
import這段程式就是開啟乙個叫做text.txt的文字文件,然後把我得到的網頁資料寫進去。效果如下urllib.request
from bs4 import
beautifulsoup
response = urllib.request.urlopen('
')with open(
'test.txt
','w+
') as f:
l = response.read().decode('
utf-8')
(type(l))
(f.writable())
f.write(l)

到此為止,我們已經知道了如何設計爬蟲——訪問網路資源,解析資料,儲存資料。
在後面的文章裡,我會就這三個方面分別介紹python中的一些實用的庫,以及其用法,中間會穿插一些簡單的爬蟲。
如果讀者是在使用python2.7版本的話,我推薦大家去這個部落格學習,這位博主的爬蟲系列教程寫的很是詳細,應該可以幫助到大家。
Python爬蟲開發 01 最簡單的乙個爬蟲模型
目的 實現乙個完成的請求與響應模型 urllib2提供乙個基礎函式urlopen,通過指定的url發出請求來獲取資料,最簡單的形式就是 import urllib2 請求開啟某頁面 response urllib2.urlopen 讀取頁面內容並將之賦值給html html response.rea...
Python 爬蟲系列(一)
1 為了省去時間投入學習,推薦直接安裝整合環境 anaconda 2 ide pycharm pydev 3 工具 jupyter notebook 安裝完anaconda會有的 1 瘋狂的python 快速入門精講 python2.x,可體驗到與python3.x的差異 看完這些課程,自己對pyt...
python爬蟲系列(一)
整理這番外篇的原因是希望能夠讓爬蟲的朋友更加理解這塊內容,因為爬蟲爬取資料可能很簡單,但是如何高效持久的爬,利用程序,執行緒,以及非同步io,其實很多人和我一樣,故整理此系列番外篇 程式並不能單獨和執行只有將程式裝載到記憶體中,系統為他分配資源才能執行,而這種執行的程式就稱之為程序。程式和程序的區別...