網頁的構成
- HTML:<>,類似于房間中的“結構”,如客廳與臥室的區別;
- CSS:< div class="">,類似于房間中的“樣式”,如房間的裝修,墻壁什么顏色,地板是什么顏色的;
- JavaScript:<script >,類似于房間中的“功能”,如房間中的電視、電燈。
我們爬蟲主要是爬HTML+CSS。
<div > < /div >
div代表網頁區域的意思,代表在該區域能裝什么東西;
例:
< div class="a">
< p>wow!< /p>
< /div >
引申:P 寫入文字;li 寫入列表;img插入圖;h1-h6代表不同字號的字體;a href =""寫入網頁鏈接
實際上用div來區分,主要分三個部分:header、content和footer。
在header又分LOGO和導航;
在content又分圖片、title和description;
Paste_Image.png
解析網頁中的元素
解析庫有(html.parser / lxml HTML / lxml XML / html5lib)
爬取網站的主要分兩步:
第一步是服務器與本地的交換機制
- 平常我們瀏覽頁面都是先請求服務器(Request),然后服務器再回應(Response)。
- 向服務器請求的Request行為實際上包含了不同的方法,而我們爬取網頁只需要get和post的方法。代碼舉例:get/page_one.html http/1.1 host:www.sample.com
- 服務器向我們回應的Response行為,如果反饋結果是status_code:200說明反饋成功,如果是404或者403就失敗了。
第二步是解析真實網頁的方法
(案例網址:http://www.tripadvisor.cn/Attractions-g60763-Activities-New_York_City_New_York.html)
- 導入我們需要的庫
- 粘貼我們需要爬取的網址
- 使用Request向服務器請求獲取網頁內容
- 使用BeautifulSoup解析網頁
- 描述要爬取的元素位置
- 整理并篩選所選信息
- 反爬蟲處理(偽造Cookie信息,構造想服務器提交的參數:headers)
- 構造函數
- 爬取連續多頁的信息
- 模擬手機頁面獲取反爬取信息