2015-09-09 2 views
1

поэтому единственная проблема, которую я оставил для этого веб-искателя, заключается в том, чтобы, когда домен верхнего уровня изменяется, скажем, с 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) 

ответ

0

Пока доменные имена, используемые в ваших robots.txt спичек один соответствующий URL ваших robots.txt, это все в порядке. Другими словами, вы можете заменить yoursite.imdb на yoursite.youtube во всех URL-адресах. Хорошо.

Update

Скажем у вас есть карта сайта объявлена ​​в файле robots.txt, то он должен иметь такую ​​же TLD.

http://www.yoursite.imbd/robots.txt

должен содержать:

карты сайт: http://www.yoursite.imbd/sitemap1.xml (не .youtube)

В противном случае, для директив, такие, как разрешить или запретить, не существует влияние, так как TDL не появляются в пути.

+0

Извините, но вы могли бы предоставить образец кода, я не совсем понимаю, о чем вы говорите. – Dakotabartell

+0

См. Мое обновление в вопросе – JVerstry