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'))