前面的章節(jié)
本節(jié)章節(jié) 爬一個圖片網(wǎng)站上
爬蟲是啥
網(wǎng)絡爬蟲是什么?
看意思是一個蟲子,一個什么蟲子?實際上指的是蜘蛛spider。
蜘蛛結成網(wǎng),在網(wǎng)上爬來爬去的尋找墜入網(wǎng)絡中的食物。
網(wǎng)絡爬蟲就是差不多的意思,在互聯(lián)網(wǎng)上爬來爬去的尋找你的精神食物。
開始爬前的準備
要開始爬,你得先知道爬哪里吧,你得先獲得網(wǎng)頁的源碼即HTML信息吧,獲得后,你需要分析出鏈接和圖片等資源吧。
要獲取HTML并分析網(wǎng)頁信息,需要下載一個第三方的庫requesets,下載地址:
下載并解壓
最重要的是 這個庫有完善的中文資料 ,討厭蝌蚪文的可以放心的參考
你如果和我一樣使用pycharm來編輯,加入第三方庫的步驟如下:
安裝好requests第三方庫后,開始測試
開始獲取HTML
怎么樣,驚喜不驚喜,簡單不簡單,使用其它語言,無法用這么簡單的語句就獲得html的信息。
解析HTML
使用request獲取了網(wǎng)頁源碼,下一步就是如何解析了,你如果用過C++等語言,你會發(fā)現(xiàn)很難找到順心的網(wǎng)頁解析庫,但python在這方面卻很擅長。
還是用一個第三方庫 Beautiful Soup
這是個什么庫呢?
直譯為:漂亮的湯?
難道是將網(wǎng)頁作為美味的湯,從這湯里慢慢品味其中滋味,抽絲剝繭的分析湯的構成成分、湯的味道? 老外的思路,真難猜,先不管這個了。
說白了,就是用來解析HTML或XML,從中提取有用數(shù)據(jù)的庫。
而且也有強大的中文支持
首先分析,解析哪些鏈接
這應該是按類別來分的,我們在源碼中找到這一項
之所以有亂碼,很可能是與我電腦沒有日文字體有關也可能編碼不正確,先不管它了,目前對解析無影響,可以看出,這些類別是放在class=menu的div下了,具體的就是這個DIV下的
1、好了,首先第一步,獲得這個DIV
這樣我們就獲得了這個DIV的內容,下面再繼續(xù)解析這個DIV
2、解析DIV
解析這個DIV,還要以這個DIV內容為參數(shù),構造一個BeautifulSoup(以下簡稱為BS :) 注意絕不是鄙視的意思)對象,因為全篇只有一個menu 類型的DIV,所以所有類型都保存在上面解析的div_menu[0]中了,將這個對象強制轉換為字符串類型做BS的參數(shù)
看源碼可以發(fā)現(xiàn),鏈接都是站內鏈接
現(xiàn)在注意了,我要把所有的鏈接提取出來
輸出所有的鏈接
對應HTML源碼
可以看到,第一個 a標簽,是沒有href屬性的,所以,會輸出None,其它a標簽,正常輸出
因為這些都是站內鏈接,
我們先定義一個變量,表示該站的域名
又因為,有的鏈接可能是none,所以需要判斷下是否存在href屬性,下面是輸出所有鏈接的代碼
輸出的鏈接如下:
這樣,我們就正確的獲得了這些類別對應的網(wǎng)址了。
下一步工作,下一節(jié)再說,現(xiàn)在還有些事,改天聊