urllib.robotparser

urllib.robotparser

一、簡介

urllib.robotparser,用於實現對網站Robots協議的分析

二、Robots協議

1 概念

Robots協議亦稱爬蟲協議、機器人協議,用來告訴爬蟲和搜索引擎哪些頁面可以抓取,哪些不可以抓取。它通常是一個放在網站根目錄下的robots.txt文件

2、例子

User-agent: *(搜索爬蟲的名稱)

Disallow: /

Allow: /public/

3、爬蟲名稱

BaiduSpider 百度
Googlebot 谷歌
360Spider 360搜索
YadaoBot 有道
ia_archiver Alexa
Scooter altavista

三、robotparser

該模塊提供了一個 類 RobotFileParser,它可以根據某網站的 robots.txt 文件來判斷一個爬取爬蟲是否有權限來爬取這個 網頁。

urllib.robotparser.RobotFileParser(url='') 

當然,也可以在聲明時不傳入,默認爲空,最後再使用 set_url()方法設置一下也可。 下面介紹了這個類常用的幾個方法

(1)set_url()

用來設置robot.txt文件的鏈接

(4)read()

讀取robot文件並分析,但不返回任何內容

相當於parse+urlopen+read+decode+split

(3)parse()

解析robot內容,傳入robot某些行的內容,它會按照robot.txt文件的語法來解析這些內容

(4)can_fetch(User-agent,URL)

返回的內容是搜索引擎是否可以抓取這個URL,True,False

(5)mtime()

返回上次抓取robot.txt文件的時間

(6)modified()

將當前時間設置爲上次抓取和分析robots.txt的時間,對長時間分析和抓取的搜索爬蟲很有幫助。

from urllib.robotparser import RobotFileParser
from urllib.request import urlopen

#Tab鍵太好用了,代碼自動補全。
url='http://jianshu.com/robots.txt'
#創建對象
rp=RobotFileParser(url)
#rp.set_url(url)
rp.read()
#rp.parse(urlopen(url).read().decode('utf-8').split('\n'))
print(rp.can_fetch('*','http://www.jianshu.com/p/b67554025d7d'))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章