轉載請註明作者和出處: http://blog.csdn.net/c406495762
Github代碼擷取:https://github.com/Jack-Cherish/python-spider
Python版本: Python3.x
運行平台: Windows
IDE: Sublime text3
PS:本文為Gitchat線上分享文章,該文章發布時間為2017年09月19日。活動地址:
http://gitbook.cn/m/mazi/activity/59b09bbf015c905277c2cc09
一 前言 二 網路爬蟲簡介 審查元素 簡單一實例 1 requests安裝 2 簡單一實例 三 爬蟲實戰 小說下載 1 實戰背景 2 小試牛刀 3Beautiful Soup 3整合代碼 優美壁紙下載 1實戰背景 2實戰進階 3整合代碼 愛奇藝VIP視頻下載 1實戰背景 2實戰升級 3編寫代碼 四 總結
一 前言
強烈建議:請在電腦的陪同下,閱讀本文。本文以實戰為主,閱讀過程如稍有不適,還望多加練習。
本文的實戰內容有: 網路小說下載(靜態網站) 優美壁紙下載(動態網站) 愛奇藝VIP視頻下載 二 網路爬蟲簡介
網路爬蟲,也叫網路蜘蛛(Web Spider)。它根據網頁地址(URL)爬取網頁內容,而網頁地址(URL)就是我們在瀏覽器中輸入的網站連結。比如:https://www.baidu.com/,它就是一個URL。
在講解爬蟲內容之前,我們需要先學習一項寫爬蟲的必備技能:審查元素(如果已掌握,可跳過此部分內容)。 1 審查元素
在瀏覽器的地址欄輸入URL地址,在網頁處按右鍵,找到檢查。(不同瀏覽器的叫法不同,Chrome瀏覽器叫做檢查,Firefox瀏覽器叫做查看元素,但是功能都是相同的)
我們可以看到,右側出現了一大推代碼,這些代碼就叫做HTML。什麼是HTML。舉個容易理解的例子:我們的基因決定了我們的原始容貌,伺服器返回的HTML決定了網站的原始容貌。
為啥說是原始容貌呢。因為人可以整容啊。紮心了,有木有。那網站也可以”整容”嗎。可以。請看下圖:
我能有這麼多錢嗎。顯然不可能。我是怎麼給網站”整容”的呢。就是通過修改伺服器返回的HTML資訊。我們每個人都是”整容大師”,可以修改頁面資訊。我們在頁面的哪個位置點擊審查元素,瀏覽器就會為我們定位到相應的HTML位置,進而就可以在本地更改HTML資訊。
再舉個小例子:我們都知道,使用瀏覽器”記住密碼”的功能,密碼會變成一堆小黑點,是不可見的。可以讓密碼顯示出來嗎。可以,只需給頁面”動個小手術”。以淘寶為例,在輸入密碼框處右鍵,點擊檢查。
可以看到,瀏覽器為我們自動定位到了相應的HTML位置。將下圖中的password屬性值改為text屬性值(直接在右側代碼處修改):
我們讓瀏覽器記住的密碼就這樣顯現出來了:
說這麼多,什麼意思呢。瀏覽器就是作為用戶端從伺服器端擷取資訊,然後將資訊解析,並展示給我們的。我們可以在本地修改HTML資訊,為網頁”整容”,但是我們修改的資訊不會回傳到伺服器,伺服器儲存的HTML資訊不會改變。重新整理一下介面,頁面還會回到原本的樣子。這就跟人整容一樣,我們能改變一些表面的東西,但是不能改變我們的基因。 2 簡單一實例
網路爬蟲的第一步就是根據URL,擷取網頁的HTML資訊。在Python3中,可以使用urllib.request和requests進行網頁爬取。 urllib庫是python內建的,無需我們額外安裝,只要安裝了Python就可以使用這個庫。 requests庫是第三方庫,需要我們自己安裝。
requests庫強大好用,所以本文使用requests庫擷取網頁的HTML資訊。requests庫的github地址:https://github.com/requests/requests (1) requests安裝
在cmd中,使用如下指令安裝requests:
pip install requests 1
或者:
easy_install requests 1
(2) 簡單一實例
requests庫的基礎方法如下:
官方中文教程地址:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html
requests庫的開發人員為我們提供了詳細的中文教程,查詢起來很方便。本文不會對其所有內容進行講解,摘取其部分使用到的內容,進行實戰說明。
首先,讓我們看下requests.get()方法,它用於向伺服器發起GET請求,不瞭解GET請求沒有關係。我們可以這樣理解:get的中文意思是得到、抓住,那這個requests.get()方法就是從伺服器得到、抓住資料,也就是擷取資料。讓我們看一個例子(以 www.gitbook.cn為例)來加深理解:
# -*- coding:UTF-8 -*-import requestsif __name__ == '__main__': target = 'http://gitbook.cn/' req = requests.get(url=target) print(req.text) 1 2 3 4 5 6 7
requests.get()方法必須設定的一個參數就是url,因為我們得告訴GET請求,我們的目標是誰,我們要擷取誰的資訊。運行程式看下結果:
左側是我們程式獲得的結果,右側是我們在www.gitbook.cn網站審查元素獲得的資訊。我們可以看到,我們已經順利獲得了該網頁的HTML資訊。這就是一個最簡單的爬蟲執行個體,可能你會問,我只是爬取了這個網頁的HTML資訊,有什麼用呢。客官稍安勿躁,接下來進入我們的實戰本文。 三 爬蟲實戰 1 小說下載 (1) 實戰背景
小說網站-筆趣看:URL:http://www.biqukan.com/
筆趣看是一個盜版小說網站,這裡有很多起點中文網的小說,該網站小說的更新速度稍滯後於起點中文網正版小說的更新速度。並且該網站只支援線上瀏覽,不支援小說打包下載。因此,本次實戰就是從該網站爬取並儲存一本名為《一念永恒》的小說,該小說是耳根正在連載中的一部玄幻小說。PS:本執行個體僅為交流學習,支援耳根大大,請上起點中文網訂閱。 (2) 小試牛刀
我們先看下《一念永恒》小說的第一章內容,URL:http://www.biqukan.com/1_1094/5403177.html
我們先用已經學到的知識擷取HTML資訊試一試,編寫代碼如下: