поэтому единственная проблема, которую я оставил для этого веб-искателя, заключается в том, чтобы, когда домен верхнего уровня изменяется, скажем, с imdb на youtube, он затем переключит robots.txt из следуя правилам запрета imdb на youtube. Я считаю, что все это можно установить только с тем, как переменные объявлены в начале.Гибкость Robots.txt с доменами верхнего уровня
import urllib.request
import urllib.parse
from bs4 import BeautifulSoup
import re
re.IGNORECASE = True
#SourceUrl
url = "http://www.imdb.com"
urls = [url]
visited =[url]
robotsUrl = url +'/robots.txt'
while len(urls) < 250000:
try:
htmltext = urllib.request.urlopen(urls[0]).read()
robots = urllib.request.urlopen(robotsUrl).read()
disallowList = re.findall(b'Disallow\:\s*([a-zA-Z0-9\*\-\/\_\?\.\%\:\&]+)', robots)
except:
print (urls[0])
sourceCode = BeautifulSoup(htmltext, "html.parser")
urls.pop(0)
print(len(urls))
for link in sourceCode.findAll('a', href=True):
if "http://" not in link['href']:
link['href'] = urllib.parse.urljoin(url,link['href'])
in_disallow = False
for i in range(len(disallowList)):
if (disallowList[i]).upper().decode() in link['href'].upper():
in_disallow = True
break
if not in_disallow:
if link['href'] not in visited:
urls.append(link['href'])
visited.append(link['href'])
print (visited)
Извините, но вы могли бы предоставить образец кода, я не совсем понимаю, о чем вы говорите. – Dakotabartell
См. Мое обновление в вопросе – JVerstry