python自我學習 二 爬一個圖片網站上

weixin_34365417發表於2017-12-27

前面的章節

Python安裝

python自我學習 一 python語法,及變數型別

本節章節 爬一個圖片網站上

爬蟲是啥

網路爬蟲是什麼?

看意思是一個蟲子,一個什麼蟲子?實際上指的是蜘蛛spider。

蜘蛛結成網,在網上爬來爬去的尋找墜入網路中的食物。

網路爬蟲就是差不多的意思,在網際網路上爬來爬去的尋找你的精神食物。

開始爬前的準備

要開始爬,你得先知道爬哪裡吧,你得先獲得網頁的原始碼即HTML資訊吧,獲得後,你需要分析出連結和圖片等資源吧。

要獲取HTML並分析網頁資訊,需要下載一個第三方的庫requesets,下載地址:

下載並解壓

4966115-048e8e4dff038ee8

最重要的是 這個庫有完善的中文資料 ,討厭蝌蚪文的可以放心的參考

你如果和我一樣使用pycharm來編輯,加入第三方庫的步驟如下:

4966115-1de5f8f3efc69591
4966115-cc2600629808620f
4966115-45d6a68a6952c54c

安裝好requests第三方庫後,開始測試

開始獲取HTML

4966115-64c4283df35ff85e
4966115-16f4f0ab7c746e60

怎麼樣,驚喜不驚喜,簡單不簡單,使用其它語言,無法用這麼簡單的語句就獲得html的資訊。

解析HTML

使用request獲取了網頁原始碼,下一步就是如何解析了,你如果用過C++等語言,你會發現很難找到順心的網頁解析庫,但python在這方面卻很擅長。

還是用一個第三方庫 Beautiful Soup

這是個什麼庫呢?

直譯為:漂亮的湯?

難道是將網頁作為美味的湯,從這湯裡慢慢品味其中滋味,抽絲剝繭的分析湯的構成成分、湯的味道? 老外的思路,真難猜,先不管這個了。

說白了,就是用來解析HTML或XML,從中提取有用資料的庫。

而且也有強大的中文支援

4966115-52e1cfd2aad3088d
4966115-3ec3eff92e7f21e1

首先分析,解析哪些連結

4966115-87e9f89fafd4bb8e

這應該是按類別來分的,我們在原始碼中找到這一項

4966115-5daaf3643a240762

之所以有亂碼,很可能是與我電腦沒有日文字型有關也可能編碼不正確,先不管它了,目前對解析無影響,可以看出,這些類別是放在class=menu的div下了,具體的就是這個DIV下的

1、好了,首先第一步,獲得這個DIV

4966115-2077d061f4bbd44b

這樣我們就獲得了這個DIV的內容,下面再繼續解析這個DIV

2、解析DIV

解析這個DIV,還要以這個DIV內容為引數,構造一個BeautifulSoup(以下簡稱為BS :) 注意絕不是鄙視的意思)物件,因為全篇只有一個menu 型別的DIV,所以所有型別都儲存在上面解析的div_menu[0]中了,將這個物件強制轉換為字串型別做BS的引數

4966115-aa8abd128149180e

看原始碼可以發現,連結都是站內連結

4966115-e04431b6676858bc

現在注意了,我要把所有的連結提取出來

4966115-882803af631ddea7

輸出所有的連結

4966115-928d4935d71813d4
4966115-7dcca876dd1d38ad

對應HTML原始碼

4966115-c681d7f320e6b9ff

可以看到,第一個 a標籤,是沒有href屬性的,所以,會輸出None,其它a標籤,正常輸出

因為這些都是站內連結,

我們先定義一個變數,表示該站的域名

4966115-7d247664c7cf820a

又因為,有的連結可能是none,所以需要判斷下是否存在href屬性,下面是輸出所有連結的程式碼

4966115-091867f3974c0c1c

輸出的連結如下:

4966115-bf637c09c44b1907

這樣,我們就正確的獲得了這些類別對應的網址了。

下一步工作,下一節再說,現在還有些事,改天聊

相關文章