首頁 >後端開發 >Python教學 >網路爬蟲如何做才算好?

網路爬蟲如何做才算好?

PHP中文网
PHP中文网原創
2017-06-20 16:23:321693瀏覽

網路爬蟲的實質,其實是從網路上「偷」資料。透過網路爬蟲,我們可以收集到所需的資源,但同樣,使用不當也可能引發一些比較嚴重的問題。

因此,在使用網路爬蟲時,我們需要做到「盜亦有道」。

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

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

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

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

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

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

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

此外,網路爬蟲也可能造成使用者的隱私外洩。

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

  • 對伺服器的效能騷擾

  • 內容層面的法律風險

  • 個人隱私的洩漏

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

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

對於一般的伺服器來講,我們可以透過2種方式來限製網路爬蟲:

1. 如果網站的擁有者有一定的技術能力,可以透過來源審查來限製網路爬蟲。

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

2. 透過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協定是不一樣的,在爬取時需要多加留意。

以上是網路爬蟲如何做才算好?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn