Python爬蟲(二十)
學習Python爬蟲過程中的心得體會以及知識點的整理,方便我自己查找,也希望可以和大家一起交流。
—— 爬蟲需要遵守的規則 ——
網絡爬蟲的尺寸
-
爲了爬取網頁的爬蟲:小規模,數據量小,爬取速度不敏感。
建議使用Requests庫。 -
爲了爬取網站或者系列網站的爬蟲:中規模,數據量較大,爬取速度敏感;
建議使用Scrapy庫 -
爲了爬取全網的爬蟲:大規模,類似於搜索引擎,爬取速度關鍵;
只能進行定製開發
網絡爬蟲引發的問題
主要問題:騷擾問題、法律風險、隱私泄露。
-
網絡爬蟲的騷擾:受限於編寫水平和目的,網絡爬蟲將會爲Web服務器帶來巨大的資源開銷。
-
網絡爬蟲的法律風險:服務器上的數據有產權歸屬,網絡爬蟲獲取數據後牟利將帶來法律風險。
-
網絡爬蟲泄露隱私:網絡爬蟲可能具備突破簡單訪問控制的能力,獲得被保護數據從而泄露個人隱私。
網絡爬蟲的限制
-
來源審查:判斷UserAgent進行限制
- 檢查來訪HTTP協議頭的UserAgent域,只響應瀏覽器或友好爬蟲的訪問。
- 對維護網站的技術人員的技術水平有要求。
-
發佈公告:Robots協議
- 告知所有爬蟲網站的爬取策略,要求爬蟲遵守
- 但是是否遵守,還是靠爬蟲本身。
Robots協議
Robots Exclusion Standard 網絡爬蟲排除標準
-
作用:網站告知網絡爬蟲哪些頁面可以抓取,哪些不行。
-
形式:在網站根目錄下的robots.txt文件 Robots協議基本語法。
例如:https://www.jd.com/robots.txt
全文如下:User-agent: * Disallow: /?* Disallow: /pop/*.html Disallow: /pinpai/*.html?* User-agent: EtaoSpider Disallow: / User-agent: HuihuiSpider Disallow: / User-agent: GwdangSpider Disallow: / User-agent: WochachaSpider Disallow: /
-
User-agent: *
該協議將爬蟲命名爲User-agent,符號“ * ”代表所有,意思是所有爬蟲均要遵守該協議。 -
Disallow: /?*
Disallow是指不允許爬取的頁面,“ /?* 是指根目錄所有以疑問號開頭的網頁,/代表根目錄,意思是不允許爬取該網站根目錄所有以疑問號開頭的網頁。 -
Disallow: /pop/*.html?*
“/pop/*.html?*
”是指一種通配符,相關知識需要先學習正則表達式。 -
User-agent: EtaoSpider
Disallow: /
意思是名字叫EtaoSpider的爬蟲禁止爬取該網站的任何網頁。
作爲搜索引擎的百度,他的robots協議的規定就複雜得多:百度robots協議
全文見本文末尾。 -
Robots協議的遵守方式
-
若網站無robots協議或者robots協議爲空,則默認爬蟲可以爬取所有信息。
-
網絡爬蟲使用Robots協議:自動或人工識別robots.txt,再進行內容爬取 。
-
約束性:Robots協議是建議但非約束性,網絡爬蟲可以不遵守,但存在法律風險。
※百度robots協議全文(看最後一行你就懂了):
User-agent: Baiduspider
Disallow: /baidu
Disallow: /s?
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: Googlebot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: MSNBot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: Baiduspider-image
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: YoudaoBot
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: Sogou web spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: Sogou inst spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: Sogou spider2
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: Sogou blog
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: Sogou News Spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: Sogou Orion spider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: ChinasoSpider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: Sosospider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: yisouspider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: EasouSpider
Disallow: /baidu
Disallow: /s?
Disallow: /shifen/
Disallow: /homepage/
Disallow: /cpro
Disallow: /ulink?
Disallow: /link?
Disallow: /home/news/data/
Disallow: /bh
User-agent: *
Disallow: /