Обзор
Следующий скрипт прочитает файл robots.txt сверху вниз, разделив его на новую строку. Скорее всего, вы не будете читать robots.txt из строки, а скорее будете похожи на итератор.
Когда найдена метка User-agent, начните создавать список пользовательских агентов. Несколько пользовательских агентов совместно используют набор разрешенных / разрешенных разрешений.
При идентификации ярлыка «Разрешенные» или «Запрещенные» выдают это разрешение для каждого пользовательского агента, связанного с блоком разрешений.
Передача данных таким образом, вы сможете сортировать или объединять данные для любого случая использования.
- Группировка по User-agent
- Группировка по разрешению: Разрешено / Не разрешено
- создать словарь путей и соответствующих разрешений или пользовательского агента
def robot_permissions(permission_string):
user_agents = []
new_block = True
for l in permission_string.split("\n"):
clean_l = l.strip()
if len(clean_l) > 0:
(tag, value) = l.split(":")
tag = tag.strip()
value = value.strip()
if tag == "User-agent":
if new_block:
user_agents = []
new_block = False
user_agents.append(value)
else:
new_block = True
for agent in user_agents:
yield (tag, value, agent)
def agent_filter(piter, filter_agent):
for tag, value, agent in piter:
if agent == filter_agent:
yield (tag, value, agent)
if __name__ == "__main__":
piter = robot_permissions(robots)
for p in agent_filter(piter, "Yeti"):
print(p)
Заголовок файла robots.txt из python script
('Allow', '/', 'Yeti')
('Disallow', '/accountstatus', 'Yeti')
('Disallow', '/AccountStatus', 'Yeti')
('Disallow', '/aui/inbound', 'Yeti')
('Disallow', '/authenticate', 'Yeti')
('Disallow', '/autologin', 'Yeti')
('Disallow', '/clearcookies', 'Yeti')
('Disallow', '/companies', 'Yeti')
('Disallow', '/dvdterms', 'Yeti')
('Disallow', '/editpayment', 'Yeti')
Хвост роботов. вывод txt из python script
('Disallow', '/profiles/*', 'Yeti')
('Disallow', '/ProfilesGate', 'Yeti')
('Disallow', '/search', 'Yeti')
('Disallow', '/search/*', 'Yeti')
('Disallow', '/viewingactivity', 'Yeti')
('Disallow', '/WiViewingActivity', 'Yeti')
('Disallow', '/yourAccount', 'Yeti')
('Disallow', '/youraccount', 'Yeti')
('Disallow', '/YourAccount', 'Yeti')
('Disallow', '/YourAccountPayment', 'Yeti')