python的爬蟲功能如何實現

iOS開發假如之前沒接觸過除了c和c++(c++太難了,不花個十來年根本不可能通曉)的言語,第二門言語最好的選擇就是Python.緣由就是

1.語法簡單

2.庫太多,隨便想要什么功能的庫都找得到,簡直編程界的哆啦A夢.

3.語法優美,不信?你去看看python超過兩千行的代碼再回頭看看用oc寫的超過兩千行的代碼,oc寫的簡直丑到極致(沒命名空間,點語法調用和括號調用混用).

你如果想自己弄個app,例如每日精選美女之類的app,你服務端總得有圖吧,怎么弄?自己用爬蟲爬啊,爬到鏈接了塞到數據庫里,傳個json,app直接sdwebimage就好了.多爽!

廢話不多說.開始寫.

我先假設你用的是Mac,然后Mac都預裝了python2.x,然后呢,你有了python沒用,你得有庫.沒庫怎么干活?怎么安裝庫呢?

python界也有個類似于我們iOS開發里cocoapods的東西,這個東西叫做pip.

pip和cocoapods用起來的命令都極其類似,我們只需要兩個庫,一個叫做urllib2,一個叫做Beautifulsoup.

urllib2是干什么的呢?它的作用就是把網頁down下來,然后你就可以分析網頁了.

Beautifulsoup干什么的呢?你用urllib2把網頁down下來了之后,里面都是html+css什么的,你想要從亂七八糟的一堆html里面找到正確的圖片鏈接那可不是件簡單的事,據我這幾天的學習,做法無非兩個,一個是自己寫正則表達式然后用一個叫re的python庫,另一個是使用lxml解析xpath.這兩個說實話都不太好用,一個正則就夠你吃一壺的.后來我搜索了很久,發現了一個庫叫做Beautifulsoup,用這個庫解析html超級好用.

首先配置python環境,安裝pip:

python的爬蟲功能如何實現

然后你們打開terminal敲入下面這個命令.

python的爬蟲功能如何實現

然后就會自動幫你安裝BeautifulSoup這個東西了.urllib2因為是自帶的,所以不用你下載了.

好的我們隨意打開網頁http://www.pcpop.com/doc/1/1279/1279531.shtml,直接右鍵打開源文件.

你看到的是這些東西.

圖片鏈接就在li這個標簽下地img標簽里.現在我們需要做的就是嘗試著把這種類型的li從所有html中分離出來.我們可以看到li這個標簽有個屬性叫做class,這個屬性的值是class=”span3”,我們把這段話li class=”span3”

搜索一下,我們發現有20個結果.恰巧,我們這個頁面的圖片也只有20個,那么可以確定的是我們找到了區別于其他標簽的唯一性.

再仔細分析下,img這個標簽在li這個標簽里有且只有一個.那么,也就是說,我們先搜索出所有符合條件的li標簽,然后找到里面的img標簽就可以找到所有的圖片鏈接了.

然后看代碼.

python的爬蟲功能如何實現

我們來一句一句分析下.其實python的語法超級簡單.

凡是#打頭的就是python里面的注釋語句類似于oc里的//.

分別說明我們的環境是python,編碼是utf-8

然后import了四個庫,分別是urllib2,urllib,os,和Beautifulsoup庫.

導入Beautifulsoup庫的方式和其他三個不太一樣.我暫時也不清楚為什么python用這種導入方式,不過照貓畫虎就行了.

然后def打頭的就是定義一個函數,python里面是不用分號做句與句的分隔符的.他用縮進來表示.與def縮進一個tab的都是函數體.

html = urllib2.urlopen('http://www.pcpop.com/doc/1/1279/1279531.shtml').read()

這句很簡單,就是讀取網頁的html.然后把值賦給html這個變量.python里聲明變量前面不用加任何東西,不用加聲明語句和變量類型,就連JavaScript聲明變量還要加個var呢.

我們獲取了網頁的html之后呢,聲明了一個Beautifulsoup變量soup,用來準備解析html.

liResult = soup.findAll('img',attrs={“width”:”175″})

這句話的意思就是,尋找html中所有img標簽,并且這個img標簽有個屬性width,width的值是175.

注意這個findAll函數,有點常識的話你應該清楚,凡是帶all的函數基本上返回的都是一個數組,所以我們liResult這個變量實際上是一個數組.

for image in liResult:

這句話基本和oc里的遍歷數組語法完全一樣.就是遍歷liResult里的每一個變量.那么每一個變量就是一個標簽.

link = image.get('src')

這句的意思就是,獲取img標簽里的src屬性,src就是我們最想要的圖片鏈接了.

這里定義了一個變量count = 0,然后在 for 循環里面做遞加 count += 1,最終把這個值

賦給我們的變量imageName = count,以便后面使用。

python的爬蟲功能如何實現

這兩句,第一句是設置一個文件存放地址,第二句用urllib這個庫的urlretrieve這個方法下載我們的圖片,并且把圖片放到剛才的路徑里.

好了,萬事具備了,我們現在跑一下我們的腳本

python的爬蟲功能如何實現python的爬蟲功能如何實現

好了,我們的圖片就下載完了.

然后在看看下載的內容:

python的爬蟲功能如何實現

 

馬哥學習交流群

馬哥教育-Python開發-1群 335068227

馬哥教育-Python開發-2群 608459685

 

相關新聞

聯系我們

400-080-6560

在線咨詢:點擊這里給我發消息

郵件:[email protected]

工作時間:周一至周日,09:00-18:30

QR code
云南快乐10分开奖直播