Analizando Robots.txt en python

Quiero analizar el archivo robots.txt en python. He explorado robotParser y robotExclusionParser pero nada realmente satisface mis criterios. Quiero recuperar todas las direcciones de acceso telefónico permitidas y permitidas en un solo disparo en lugar de verificar manualmente cada URL si está permitido o no. ¿Hay alguna biblioteca para hacer esto?

Puede usar el comando curl para leer el archivo robots.txt en una sola cadena dividirlo con la nueva línea de verificación para permitir y no permitir las URL.

 import os result = os.popen("curl https://fortune.com/robots.txt").read() result_data_set = {"Disallowed":[], "Allowed":[]} for line in result.split("\n"): if line.startswith('Allow'): # this is for allowed url result_data_set["Allowed"].append(line.split(': ')[1].split(' ')[0]) # to neglect the comments or other junk info elif line.startswith('Disallow'): # this is for disallowed url result_data_set["Disallowed"].append(line.split(': ')[1].split(' ')[0]) # to neglect the comments or other junk info print (result_data_set) 

¿Por qué tienes que revisar tus urls manualmente? Puedes usar urllib.robotparser en Python 3, y hacer algo como esto

 import urllib.robotparser as urobot url = "example.com" rp = urobot.RobotFileParser() rp.set_url(url + "/robots.txt") rp.read() if rp.can_fetch("*", url): site = urllib.request.urlopen(url) sauce = site.read() soup = BeautifulSoup(sauce, "html.parser") actual_url = site.geturl()[:site.geturl().rfind('/')] my_list = soup.find_all("a", href=True) for i in my_list: # rather than != "#" you can control your list before loop over it if i != "#": newurl = str(actual_url+"/"+i) try: if rp.can_fetch("*", newurl): site = urllib.request.urlopen(newurl) # do what you want on each authorized webpage except: pass else: print("cannot scrap")