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














