2017-12-26 10 views
-6

robots.txt 값의 각 값을 배열을 통해 액세스 할 수있는 배열에 저장하는 방법은 무엇입니까? 예 : 웹 사이트에 다음과 같은 robots.txt가 있습니다.각 robots.txt 값을 배열에 저장

코멘트를 건너 뛰고 그 다음에 텍스트를 배열로 저장합니다. 그래서 당신은 늘되는 값 "금지 :/링크 1"이 있지만 "/ 링크 1"여기

는 (일부 알 수있는 튜토리얼에서) 내 코드로 저장 될 것입니다 :

import urllib.request 
import io 

def get_robots_txt(url): 
    if url.endswith('/'): 
     path = url 
    else: 
     path = url + '/' 
    req = urllib.request.urlopen(path + 'robots.txt', data=None) 
    data = io.TextIOWrapper(req, encoding='utf-8') 
    return data.read() 

print(get_robots_txt('http://www.stackoverflow.com')) 
input() 

기본적으로 위 URL을 가져 와서 robots.txt 내부의 모든 것을 저장 한 다음 robots.txt로 이동할 때 웹 사이트에서 보이는 것처럼 인쇄합니다. 내가 필요한 것은 단지 배열에 허용하지 않는 텍스트를 저장하기 때문에 주석 (첫 줄 건너 뛰기)을 무시하고 "Disallow :"를 잘라내서 "/ link1"을 정렬. 각 줄 다음에이 작업을 수행 한 다음 [ "/ link1", "/ abcdefg", "/ fish", "/ salad"] 미안하지만 이것이 구체적이라면 어떻게해야 할지를 전혀 모른다. 이런 식으로 일을 시작하십시오. 모든 것에 감사드립니다.

+4

는 http://idownvotedbecau.se/noattempt/ –

답변

0
total = [] 

for line in lines: 

    link = line.split(“ “)[1:] 

    total.append(link) 

그래야합니다. 그것이 당신이 찾고 있던 것이 아닌지 알려주십시오.

+0

난 내가 수행되고 있는지에 나는 아직도 명확하게하지 않은 경우 당신이 메시지에게 저를 이제 더 명확해야한다 이렇게 말씀 편집 – richperson

0

원하는 코드를 함수에 넣고 목록이 반환되고 로컬 변수가 자동으로 정리됩니다.

이 함수는 0-키 인수가있는 인수로 로봇 문자열을 사용합니다. 로봇 문자열을 라인 목록으로 나눕니다. 그런 다음 을 ": "을 구분 기호로 사용하여 의 키, 구분 기호 및 값을 터플로 반환합니다. 그런 다음 키를 검사하여 새 목록 에 값을 추가하는지 여부를 확인합니다. 루프가 완료되면 새 목록이 반환됩니다.

def part_robots_txt(robots_txt, key='Disallow'): 
    value_list = [] 
    # Split on '\n' to make a list of lines. 
    for line in robots_txt.split('\n'): 
     # Part on ': ' to split into (key, sep, value). 
     line = line.partition(': ') 
     # Check part key with argument key and append to list if True. 
     if line[0] == key: 
      value_list.append(line[2]) 
    return value_list 

disallow_list = part_robots_txt(data) 
print(disallow_list)