赞
踩
from urllib.robotparser import * # 获取robots协议内容 def get_robots(robot_url): """ :param robot_url: :return: """ # class urllib.robotparser.RobotFileParser(url='') rp = RobotFileParser() ''' 这个类提供了一些可以读取、解析和回答关于 url 上的 robots.txt 文件的问题的方法 ''' # set_url(url)设置指向 robots.txt 文件的 URL rp.set_url(robot_url) ''' 这两句也等价于 rp = RobotFileParser(url=robot_url) ''' # read()读取robots文件并进行分析 rp.read() ''' 这个方法执行一个读取和分析操作,如果不调用这个方法,接下来的所有判断都是False 这个方法不返回任何内容 ''' return rp ''' 以上方法也等价于 import urllib.request as ur from urllib.request import RobotFileParser # 获取robots协议内容 def get_robots(robot_url): """ :param robot_url: :return: """ rp = RobotFileParser() rp.parse(ur.urlopen(robot_url).read().decode('UTF-8')) return rp ''' # can_fetch(use-agent, url)如果允许 user-agent 按照被解析 robots.txt 文件中的规则来获取 url 则返回 True robot_url = "https://www.baidu.com/robots.txt" rp = get_robots(robot_url=robot_url) print(rp.can_fetch('Sogou News Spider', 'https://www.baidu.com')) # modified()将最近一次获取 robots.txt 文件的时间设置为当前时间 rp.modified() ''' 无返回内容 ''' # mtime()返回最近一次获取 robots.txt 文件的时间 print(rp.mtime()) # crawl_delay(useragent)为指定的 useragent 从 robots.txt 返回 Crawl-delay 形参 print(rp.crawl_delay(useragent='Sogou News Spider')) ''' 如果此形参不存在或不适用于指定的 useragent 或者此形参的 robots.txt 条目存在语法错误,则返回 None 3.6版本新功能 ''' # request_rate(useragent) # 以 named tuple RequestRate(requests, seconds) 的形式从 robots.txt 返回 Request-rate 形参的内容 print(rp.request_rate(useragent='Sogou News Spider')) ''' 如果此形参不存在或不适用于指定的 useragent 或者此形参的 robots.txt 条目存在语法错误,则返回 None ''' # site_maps()以 list() 的形式从 robots.txt 返回 Sitemap 形参的内容 print(rp.site_maps()) ''' 如果此形参不存在或者此形参的 robots.txt 条目存在语法错误,则返回 None 3.8版本新功能 '''
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。