diff options
author | Michael Lazar <lazar.michael22@gmail.com> | 2018-05-14 14:10:41 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2018-05-14 14:10:41 (GMT) |
commit | bd08a0af2d88c590ede762102bd42da3437e9980 (patch) | |
tree | 9f2e29d7e8c3bfe131fa78a3358afb314ae0f20d /Lib/urllib | |
parent | 5c0d462689e1a69537eaeba6ab94e3ff3524fc31 (diff) | |
download | cpython-bd08a0af2d88c590ede762102bd42da3437e9980.zip cpython-bd08a0af2d88c590ede762102bd42da3437e9980.tar.gz cpython-bd08a0af2d88c590ede762102bd42da3437e9980.tar.bz2 |
bpo-32861: urllib.robotparser fix incomplete __str__ methods. (GH-5711)
The urllib.robotparser's __str__ representation now includes wildcard
entries and the "Crawl-delay" and "Request-rate" fields. Also removes extra
newlines that were being appended to the end of the string.
Diffstat (limited to 'Lib/urllib')
-rw-r--r-- | Lib/urllib/robotparser.py | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/Lib/urllib/robotparser.py b/Lib/urllib/robotparser.py index daac29c..92e4efe 100644 --- a/Lib/urllib/robotparser.py +++ b/Lib/urllib/robotparser.py @@ -190,7 +190,10 @@ class RobotFileParser: return self.default_entry.req_rate def __str__(self): - return ''.join([str(entry) + "\n" for entry in self.entries]) + entries = self.entries + if self.default_entry is not None: + entries = entries + [self.default_entry] + return '\n\n'.join(map(str, entries)) class RuleLine: @@ -222,10 +225,14 @@ class Entry: def __str__(self): ret = [] for agent in self.useragents: - ret.extend(["User-agent: ", agent, "\n"]) - for line in self.rulelines: - ret.extend([str(line), "\n"]) - return ''.join(ret) + ret.append(f"User-agent: {agent}") + if self.delay is not None: + ret.append(f"Crawl-delay: {self.delay}") + if self.req_rate is not None: + rate = self.req_rate + ret.append(f"Request-rate: {rate.requests}/{rate.seconds}") + ret.extend(map(str, self.rulelines)) + return '\n'.join(ret) def applies_to(self, useragent): """check if this entry applies to the specified agent""" |