Parse parties autorisées et non autorisées du fichier robots.txt

M. Explorateur explorateur:

Je suis en train de faire autorisé et interdit les parties d'un agent utilisateur dans le fichier robots.txt du site en utilisant le code suivant netflix: -

robots="""

    User-agent: *
    Disallow: /

    User-agent: googlebot
    User-agent: Googlebot-Video
    User-agent: bingbot
    User-agent: Baiduspider
    User-agent: Baiduspider-mobile
    User-agent: Baiduspider-video
    User-agent: Baiduspider-image
    User-agent: NaverBot
    User-agent: Yeti
    User-agent: Yandex
    User-agent: YandexBot
    User-agent: YandexMobileBot
    User-agent: YandexVideo
    User-agent: YandexWebmaster
    User-agent: YandexSitelinks
    User-agent: SeznamBot
    Allow: /

    Disallow: /accountstatus
    Disallow: /AccountStatus
    Disallow: /aui/inbound
    Disallow: /authenticate
    Disallow: /autologin
    Disallow: /clearcookies
    Disallow: /companies
    Disallow: /dvdterms
    Disallow: /editpayment
    Disallow: /emailunsubscribe
    Disallow: /error
    Disallow: /eula
    Disallow: /geooverride
    Disallow: /help
    Disallow: /imagelibrary
    Disallow: /learnmorelayer
    Disallow: /learnmorelayertv
    Disallow: /login
    Disallow: /loginhelp
    Disallow: /loginhelp/lookup
    Disallow: /loginhelpsucess
    Disallow: /LoginHelp
    Disallow: /password
    Disallow: /logout
    Disallow: /Logout
    Disallow: /mcd
    Disallow: /modernizr
    Disallow: /n/
    Disallow: /notamember
    Disallow: /notfound
    Disallow: /notices
    Disallow: /nrdapp
    Disallow: /optout
    Disallow: /overviewblockseeother
    Disallow: /popup/codewhatisthis
    Disallow: /popupdetails
    Disallow: /PopupDetails
    Disallow: /popupprivacypolicy
    Disallow: /privacypolicychanges
    Disallow: /registration
    Disallow: /rememberme
    Disallow: /signout
    Disallow: /signurl
    Disallow: /subscriptioncancel
    Disallow: /tastesurvey
    Disallow: /termsofusechanges
    Disallow: /tvsignup
    Disallow: /upcomingevents
    Disallow: /verifyidentity
    Disallow: /whysecure

    Disallow: /arabic
    Disallow: /Arabic
    Disallow: /chinese
    Disallow: /Chinese
    Disallow: /korean
    Disallow: /Korean

    Disallow: /airtel
    Disallow: /anan
    Disallow: /bouyguestelecom
    Disallow: /britishairways
    Disallow: /brutus
    Disallow: /comhem
    Disallow: /courts
    Disallow: /csl
    Disallow: /elisa
    Disallow: /entertain
    Disallow: /FireTV
    Disallow: /firetv
    Disallow: /freemonth
    Disallow: /kpn
    Disallow: /lg
    Disallow: /maxis
    Disallow: /Maxis
    Disallow: /meo
    Disallow: /Meo
    Disallow: /orangefrance
    Disallow: /Panasonic
    Disallow: /panasonic
    Disallow: /playstation
    Disallow: /proximus
    Disallow: /qantas
    Disallow: /samsung
    Disallow: /Sony
    Disallow: /sony
    Disallow: /talktalk
    Disallow: /tdc
    Disallow: /telenor
    Disallow: /telfort
    Disallow: /tim
    Disallow: /virginaustralia
    Disallow: /vodafone
    Disallow: /vodafonedemobilelaunch
    Disallow: /xboxone
    Disallow: /xfinity
    Disallow: /xs4all
    Disallow: /ziggo

    Disallow: /accountaccess
    Disallow: /AccountAccess
    Disallow: /activate
    Disallow: /Activate
    Disallow: /app
    Disallow: /BillingActivity
    Disallow: /browse
    Disallow: /browse/*
    Allow: /browse/genre/*
    Disallow: /CancelPlan
    Disallow: /ChangePlan
    Disallow: /changeplan
    Disallow: /deviceManagement
    Disallow: /DoNotTest
    Disallow: /EditProfiles
    Disallow: /email
    Disallow: /EmailPreferences
    Disallow: /entrytrap
    Disallow: /HdToggle
    Disallow: /LanguagePreferences
    Disallow: /ManageDevices
    Disallow: /ManageProfiles
    Disallow: /MoviesYouveSeen
    Disallow: /MyListOrder
    Disallow: /NewWatchInstantlyRSS
    Disallow: /NewWatchInstantlyRSS/*
    Disallow: /payment
    Disallow: /Payment
    Disallow: /phonenumber
    Disallow: /pin
    Disallow: /profiles
    Disallow: /profiles/*
    Disallow: /ProfilesGate
    Disallow: /search
    Disallow: /search/*
    Disallow: /viewingactivity
    Disallow: /WiViewingActivity
    Disallow: /yourAccount
    Disallow: /youraccount
    Disallow: /YourAccount
    Disallow: /YourAccountPayment

    User-agent: AdsBot-Google
    User-agent: Twitterbot
    User-agent: Adidxbot
    Allow: /

    User-agent: Yahoo Pipes 1.0
    User-agent: Facebot
    User-agent: externalfacebookhit
    Disallow: /
    """

    strt=0
    ad=0
    robots=''.join(robots.lower().split(' '))
    for line in robots.split('\n'):
        if line!='':
            if ('user-agent:yeti' in line or strt==1) or ('user-agent' not in line and ad==0):
                strt=1
                print(line)
                if 'allow' in line or 'disallow' in line:
                    ad=1

J'utilise ce code pour imprimer des parties autorisées et non autorisées de l'agent utilisateur yeti mais il est peu déroutant. Quelqu'un peut-il suggérer regex ou améliorer ce code. J'utilise python ici.

Kristian:

Aperçu

Le script suivant va lire le fichier robots.txt de haut en bas sur le fractionnement newline. Très probablement, vous ne serez pas en train de lire robots.txt d'une chaîne, mais quelque chose comme un itérateur.

Lorsque l'étiquette User-agent se trouve, commencer à créer une liste des agents utilisateurs. les agents utilisateurs multiples partagent un ensemble Rejeté / permissions autorisées.

Lorsqu'un Autorisée ou étiquette Rejeté est identifié, émettre cette autorisation pour chaque agent utilisateur associé au bloc d'autorisation.

Les données à émettre cette manière vous permettra de trier ou regrouper les données pour l'utilisation selon le cas dont vous avez besoin.

  • Groupe par User-agent
  • Groupe autorisation: Autorisé / Rejeté
  • construire un dictionnaire de chemins et l'autorisation associée ou agent utilisateur
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)

Chef de sortie robots.txt de script python

('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')

Queue de sortie robots.txt de script python

('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')

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=351488&siteId=1
conseillé
Classement