網絡爬蟲,如何做到 “盜亦有道” ?

網絡爬蟲 法律 Scrapy Python 安卓網hiapk 2017-05-23
網絡爬蟲,如何做到 “盜亦有道” ?

網絡爬蟲的實質,其實是從網絡上“偷”數據。通過網絡爬蟲,我們可以採集到所需要的資源,但是同樣,使用不當也可能會引發一些比較嚴重的問題。

因此,在使用網絡爬蟲時,我們需要做到“盜亦有道”。

網絡爬蟲主要分為以下三類:

  1. 小規模,數據量小,爬取速度不敏感;對於這類網絡爬蟲我們可以使用Requests庫來實現,主要用於爬取網頁;

  2. 中規模,數據規模較大,爬取速度敏感;對於這類網絡爬蟲我們可以使用Scrapy庫來實現,主要用於爬取網站或系列網站;

  3. 大規模,搜索引擎,爬取速度關鍵;此時需要定製開發,主要用於爬取全網,一般是建立全網搜索引擎,如百度、Google搜索等。

在這三種中,我們最為常見的是第一種,大多數均是小規模的爬取網頁的爬蟲。

對於網絡爬蟲,也有很多反對聲音。因為網絡爬蟲會不停的向服務器發出請求,影響服務器性能,對服務器產生騷擾行為,並加大了網站維護者的工作量。

除了對服務器的騷擾外,網絡爬蟲也有可能引發法律風險。因為服務器上的數據有產權歸屬,如果將該數據用於牟利的話,將會帶來法律風險。

此外,網絡爬蟲也可能會造成用戶的隱私洩露。

簡而言之,網路爬蟲的風險主要歸於以下三點:

  • 對服務器的性能騷擾

  • 內容層面的法律風險

  • 個人隱私的洩露

因此,網絡爬蟲的使用需要有一定的規則。

在實際情況中,一些較大的網站都對網絡爬蟲進行了相關限制,整個互聯網上也將網絡爬蟲視為可規範的功能來看待。

對於一般的服務器來講,我們可以通過2種方式來限制網絡爬蟲:

  1. 如果網站的所有者有一定的技術能力,可以通過來源審查來限制網絡爬蟲。

來源審查,一般通過判斷User-Agent來進行限制,本篇文章著重介紹第2種。

  1. 通過Robots協議來告訴網絡爬蟲需要遵守的規則,哪些可以爬取,哪些是不允許的,並要求所有的爬蟲遵守該協議。

第2種是以公告的形式告知,Robots協議是建議但非約束性,網絡爬蟲可以不遵守,但可能會存在法律風險。通過這兩種方法,互聯網上形成了對網絡爬蟲的道德和技術上的有效限制。

那麼,我們在編寫網絡爬蟲時,就需要去尊重網站的維護人員對網站資源的管理。

互聯網上,部分網站沒有Robots協議,所有數據都可以爬取;不過,絕大多數的主流網站都支持Robots協議,有做相關限制,下面就具體介紹下Robots協議的基本語法。

Robots協議(Robots Exclusion Standard,網絡爬蟲排除標準):

作用:網站告知網絡爬蟲哪些頁面可以爬取,哪些不行。

形式:在網站根目錄下的robots.txt文件。

Robots協議的基本語法:*代表所有,/代表根目錄。

比如,PMCAFF的Robots協議

User-agent: * Disallow: /article/edit Disallow: /discuss/write Disallow: /discuss/edit

第1行中User-agent:*,是指所有的網絡爬蟲都需要遵守如下協議;

第2行中Disallow: /article/edit,是指所有的網絡爬蟲都不允許訪問article/edit下的內容,其他同理。

如果觀察京東的Robots協議,可以看到下面有User-agent: EtaoSpider,Disallow: /,其中EtaoSpider是惡意爬蟲,不允許其爬取京東的任何資源。

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: /

有了Robots協議後,可以對網站的內容做個規範,告訴所有的網絡爬蟲哪些可以爬取,哪些不允許。

需要特別注意的是,Robots協議都是存在根目錄下的,不同的根目錄可能Robots協議是不一樣的**,**在爬取時需要多加留意。

網絡爬蟲,“盜亦有道”。

參考資料:中國大學MOOC課程,Python網絡爬蟲與信息提取

相關推薦

推薦中...