Python爬蟲的道德規範---robots協議
阿新 • • 發佈:2017-09-02
robots.txt
編寫爬蟲程序爬取數據之前,為了避免某些有版權的數據後期帶來的諸多法律問題,
可以通過查看網站的robots.txt文件來避免爬取某些網頁。
robots協議,告知爬蟲等搜索引擎那些頁面可以抓取,哪些不能。它只是一個通行的道德規範,
沒有強制性規定,完全由個人意願遵守。作為一名有道德的技術人員,遵守robots協議,
有助於建立更好的互聯網環境。
網站的robots文件地址通常為網頁主頁後加robots.txt,如 www.taobao.com/robots.txt
一個簡單判斷用戶代理是否符合robots文件規定的小程序,符合條件即下載網頁:
import robotparser import urllib2 def download(url, user_agent=‘wswp‘, num_retries=2): print ‘Downloading:‘, url headers = {‘User-agent‘: user_agent} request = urllib2.Request(url, headers=headers) try: html = urllib2.urlopen(request).read() except urllib2.URLError as e: print ‘Download error:‘, e.reason html = None if num_retries > 0: if hasattr(e, ‘code‘) and 500 <= e.code < 600: return download(url,num_retries-1) return html def can_be_download(url, user_agent=‘wswp) #設置一個默認的用戶代理 rp = robotparser.RobotFileParser() url = url.split(‘/‘)[2] #獲取主頁網址 rp.set_url(‘http://‘ + str(url) + ‘/robots.txt‘) #robots.txt地址 rp.read() if rp.can_fetch(user_agent=‘wswp‘, url): download(url)
Python爬蟲的道德規範---robots協議