1.註冊中國大學MOOChtml
2.選擇北京理工大學嵩天老師的《Python網絡爬蟲與信息提取》MOOC課程
3.學習完成第0周至第4周的課程內容,並完成各周做業html5
4.提供圖片或網站顯示的學習進度,證實學習的過程。程序員
5.寫一篇很多於1000字的學習筆記,談一下學習的體會和收穫。編程
首先是對Python軟件的基礎瞭解。最經常使用的Python IDE工具:IDLE,Sublime Text,PyCharm,Anaconda&Spyder。瀏覽器
1).IDLE優勢有:自帶,默認,經常使用,入門級。建議300行如下服務器
2).Sublime Text:這是一個專爲程序員開發的第三方專用編程工具,有專業的編程體驗,有多重編程風格,是很是適合程序員的一款網絡
3).PyCharm:社區版免費,較爲簡單且集成度高,適合較爲複雜的工程app
4).Anaconda:開源免費,支持近800個第三方庫工具
下面是正式的學習環節:post
先安裝Requests庫與測試,成功後開始認識Requests庫的主要方法,大概有7個:request,get,head,post,put,patch和delete。其功能都是對應HTTP裏的功能。
Response對象一共有5個,status_code(HTTP請求的返回狀態,200表示成功,404表示失敗),text(url對應的頁面內容),enconding(從HTTP header中猜想的響應內容編碼方式),apparent_encoding(從內容中分析出的響應內容編碼方式)和content(HTTP響應內容的二進制形式)。
Requests庫異常:
1)requests.ConnectionError:網絡鏈接錯誤異常。
2)requests.HTTPError:HTTP錯誤異常
3)requests.URLRequired:URL缺失異常
4)requests.TooManyRedirects:超過最大重定向次數,產生重定向異常
5)requests.ConnectTimeout:鏈接遠程服務器超時異常
6)requests.Timeout:請求URL超時,產生超時異常。
HTTP協議對資源的操做:GET:請求獲取URL位置的資源。 HEAD:請求獲取該資源頭部信息。 POST:請求向URL位置的資源後附加新數據。 PUT:請求向URL位置存儲一個資源,覆蓋原位置的資源 。PATCH:請求局部更新URL位置的資源,即改變該處資源的部份內容 。DELETE:請求刪除URL位置存儲的資源。
網絡爬蟲的法律風險:
1)服務器上的數據有產權歸屬
2)網絡爬蟲獲取的數據牟利後將帶來法律風險
3)網絡爬蟲可能具有突破簡單控制的能力,得到被保護數據,從而泄露我的隱私
網絡爬蟲的限制:
1)來源審查:判斷User-Agent進行限制(檢查來訪HTTP協議頭的User-Agent域,只響應瀏覽器或友好爬蟲的訪問)
2)發佈公告:Robots協議(告知全部爬蟲網站的爬取策略,要求爬蟲遵照)
Beautiful Soup庫解析器:soup=BeautifulSoup(‘<html>data</html>’,’html.parser’)
解析器:
1) bs4的HTML解析器:BeautifulSoup(mk,’html.parser’)--條件:安裝
2) bs4 lxml的HTML解析器:BeautifulSoup(mk,’lxml’)--條件:pip install lxml
3) lxml的XML解析器:BeautifulSoup(mk,’xml’)--條件:pip install lxml
4) html5lib的解析器:BeautifulSoup(mk,’html5lib’)--條件:pip install html5lib
BeautifulSoup的基本元素:
1)Tag:標籤,最基本的信息組織單元,分別用<>和</>代表開頭和結尾
2)Name:標籤的名字,<p></p>的名字是’p’,格式:<tag>.name
3)Attributes:標籤的屬性,字典形式組織,格式:<tag>.attrs
4)NavigableString:標籤內非屬性字符串,<>...</>中字符串,格式:<tag>.string
5)Comment:標籤內字符串的註釋部分,一種特殊的Comment類型
標籤數的下行遍歷:
1).contents:子節點的列表,將<tag>全部兒子節點存入列表
2).Children:子節點的迭代類型,與.contents相似,用於循環遍歷兒子節點
3).descendants:子孫節點的迭代類型,包含全部子孫節點,用於循環遍歷。
BeautifulSoup類型是標籤數的根節點。
標籤數的上行遍歷:
1).parent:節點的父親標籤
2).parents:節點先輩標籤的迭代類型,用於循壞遍歷先輩節點。
標籤數的平行遍歷:
1).next_sibling:返回按照HTML文本順序的下一個平行節點標籤
2).previous_sibling:返回按照HTML文本順序的上一個平行節點標籤
3).next_siblings:迭代類型,返回按照HTML文本順序的後續全部平行節點標籤
4).previous_siblings:迭代類型,返回按照HTML文本順序的前續全部平行節點標籤。
總結:經過這些天嵩天老師的教誨,我受益不淺。初步踏入Python爬蟲殿堂的大門,我深入地認識到了爬蟲的強大。也讓我打下了堅實的基礎。但願能更進一步學習。