【问题标题】:Robots.txt flexibility with top level domains顶级域的 Robots.txt 灵活性
【发布时间】:2015-09-09 03:55:08
【问题描述】:

所以我给这个网络爬虫留下的唯一问题是,当顶级域发生变化时,比如从 imdb 到 youtube,它会将 robots.txt 从遵循 imdb 的禁止规则切换到 youtube .我相信这一切都可以通过变量在开始时的声明方式来解决。

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)

【问题讨论】:

    标签: parsing python-3.x web-crawler python-3.4 robots.txt


    【解决方案1】:

    只要你robots.txt中使用的域名与你robots.txt的url对应的域名匹配,就可以了。换句话说,您可以将所有网址中的yoursite.imdb 替换为yoursite.youtube。没关系。

    更新

    假设您在 robots.txt 中声明了站点地图,那么它应该具有相同的 tld。

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

    应该包含:

    站点地图:http://www.yoursite.imbd/sitemap1.xml(不是 .youtube)

    否则,对于允许或禁止等指令,不会产生影响,因为 TDL 不会出现在路径中。

    【讨论】:

    • 很抱歉,您能否提供一个示例代码,我不太明白您在说什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多