爬蟲系列 (一)最簡單的爬蟲

2022-07-27 14:27:43 字數 2219 閱讀 9033

首先,什麼是爬蟲?

網路蜘蛛(web spider)也叫網路爬蟲(web crawler)[1]

,螞蟻(ant),自動檢索工具(automatic indexer),或者(在foaf軟體概念中)網路疾走(web scutter),是一種「自動化

瀏覽網路

」的程式

,或者說是一種網路機械人

網路爬蟲

(又被稱為網頁蜘蛛

,網路機械人,在foaf

社群中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取全球資訊網

資訊的程式或者指令碼。另外一些不常使用的名字還有螞蟻

、自動索引、模擬程式或者蠕蟲

爬蟲就是在網際網路中爬行的蜘蛛,它會遇到資源、選擇資源、抓取資源,這個過程就是爬蟲的全部。至於如何找到前進的路,如何選擇路線,如何自我保護,如何穿過障礙,這些以後再慢慢說。現在我們先完成最簡單的三步走,

我們來看看這個簡單的功能通過python是如何實現的:

import

urllib.request

response = urllib.request.urlopen('

')print(response.read())

urlopen

你沒有看錯,這段**只有三行,它的執行效果如下:

這段**所做的是訪問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

urllib.request

from bs4 import

beautifulsoup

response = urllib.request.urlopen('

')with open(

'test.txt

','w+

') as f:

l = response.read().decode('

utf-8')

print

(type(l))

print

(f.writable())

f.write(l)

這段程式就是開啟乙個叫做text.txt的文字文件,然後把我得到的網頁資料寫進去。效果如下

到此為止,我們已經知道了如何設計爬蟲——訪問網路資源,解析資料,儲存資料。

在後面的文章裡,我會就這三個方面分別介紹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,其實很多人和我一樣,故整理此系列番外篇 程式並不能單獨和執行只有將程式裝載到記憶體中,系統為他分配資源才能執行,而這種執行的程式就稱之為程序。程式和程序的區別...