在新手向爬蟲(一)利用工具輕松爬取簡書并分析中我們初步接觸了爬蟲,關鍵在于:
- 通過工具獲取網頁內容選擇器
- 分析頁面元素,是否包含隱藏信息
- 利用瀏覽器的開發者工具分析網絡請求
現在讓我們對簡書站點做一定的分析:
Robots.txt
- 首先,網站自身的robots.txt會為我們提供一定信息。大多數網站會定義
/robots.txt
, 這樣可以讓爬蟲了解爬取該網站時存在哪些限制,雖然這些只是建議,但是一般情況下良好的網絡公民都應當遵守這些限制。關于robots.txt的詳細信息可以查看這個網站。讓我們看看簡書的robots頁面吧。
- 可以看出,簡書對無論使用哪種用戶代理(User-agent)的爬蟲都封禁了某些路徑。讓人好奇的是有兩個以/p開頭的路徑,一看就是兩篇文章,什么文章會讓簡書對爬蟲封禁呢?
哈哈,原來是某位簡友在早先簡書安卓app還沒出來時自己開發了個簡書app,估計是后來簡書app出來了,避免大家在搜索時混淆就對爬蟲封禁了這兩個頁面。 - 我們再看下其它網站的,比如知乎:
可以看到,有個Crawl-delay : 10
,它意味著無論哪種爬蟲都應該在兩次下載請求之間給出10秒的抓取延遲,我們需要遵從該建議以減輕服務器負擔。否則服務器可能封禁你的IP一段時間。 - 我們再來看看美化版wiki-wikiwand的,除了爬蟲信息外,它還提供了一個sitemap(站點地圖)來幫助爬蟲定位網站最新的信息,而無需爬取每一個網頁。(站點地圖的標準)
-
讓我們打開sitemap看看:
估算網站大小
- 目標網站的大小會影響我們如何進行爬取。估算網站大小的一個簡便方法就是檢查大型搜索站點的結果,它們的爬蟲很可能爬取過我們感興趣的頁面,不過大型的網站結果并不是很準確,用來有個直觀感受就好了;小網站還是比較實用的。
-
讓我們在搜索引擎中加入site參數來看下簡書的結果:
結果有一定差異,百度最多,谷歌其次,搜狗最少,不過都在百萬量級。
-
再看下知乎
- 搜狗知乎的網頁數超過百度不少。
- 此外,在域名后面添加URL路徑可以對搜索結果進行過濾。(很多時候我們只想爬取某一部分有特定信息的網頁)。
識別網站所有者
- 安裝
pip install whois
(python) - 對簡書使用,可以看到上海佰集信息科技有限公司,不過這里的創立日期和百度百科上2010年8月6日的登記成立日期好像不是一回事。
-
查看域名歸屬和其它一些信息也有利于我們的爬蟲決策。
-
再看下知乎和facebook的。
知乎
臉書
分析網站所用技術
- 安裝
pip install builtwith
(python) - 對簡書使用,當然網站使用技術是多面的,這里可能分析的不夠全。
-
網站所用的框架,以及AngularJS之類的動態加載,ASP.NET的會話管理和表單提交都會影響我們的爬蟲策略。
查看網頁編碼
-
網頁編碼也是我們需要注意的地方
- 可以看出簡書是使用了utf8編碼,對python爬蟲來說沒有大問題
參考:Web Scraping with Python —— 用python寫網絡爬蟲