2014-07-19 2 views
-2

주어진 웹 사이트에 robot.txt가 있는지 확인하고 해당 파일의 모든 내용을 읽고 인쇄하고 싶습니다. 어쩌면 사전에 내용을 추가하는 것이 좋을 것입니다.Python에서 robots.txt의 내용 읽기 및 인쇄

나는 robotparser module으로 게임을 시도했지만 어떻게해야하는지 알 수 없습니다.

표준 Python 2.7 패키지와 함께 제공되는 모듈 만 사용하고 싶습니다. @Stefano 대해 Sanfilippo는 제안

내가 그랬어 :

from urllib.request import urlopen 

Traceback (most recent call last): 
    File "<pyshell#1>", line 1, in <module> 
    from urllib.request import urlopen 
ImportError: No module named request 

그래서 나는 시도 반환

import urllib2 
from urllib2 import Request 
from urllib2 import urlopen 
with urlopen("https://www.google.com/robots.txt") as stream: 
    print(stream.read().decode("utf-8")) 

만 가지고 :

Traceback (most recent call last): 
스트림으로 "( https://www.google.com/robots.txt") urlopen와 에서, 라인 1, "

파일" AttributeError는 : addinfourl 인스턴스는 어떤 속성 '출구'bugs.python.org에서

는 그 2.7 버전에서 지원되지 뭔가 보이는이 없습니다. 사실이 코드는 Python 3에서 잘 작동합니다. 어떻게하면이 문제를 해결할 수 있습니까?

+0

: 당신이 사전에 내용을 넣어해야하는 경우

.split(":").strip() 친구입니다. 항상'whatever.site.name/robots.txt'에 있습니다. – user2357112

+0

@jonsharpe 나는이 질문에 대해 다시 한마디했다. 지금 충분히 좁은가요? 질문이 해결되었지만 "보류 중"상태가 제거 될 수 있는지 궁금 해서요. 감사합니다. –

답변

2

예, robots.txt은 단지 파일이며 다운로드하여 인쇄하십시오!

파이썬 3 :

from urllib.request import urlopen 

with urlopen("https://www.google.com/robots.txt") as stream: 
    print(stream.read().decode("utf-8")) 

파이썬 2 : 경로가 /robots.txt 항상 것을

from urllib import urlopen 
from contextlib import closing 

with closing(urlopen("https://www.google.com/robots.txt")) as stream: 
    print stream.read() 

참고. 당신은 robots.txt`이되어야합니다 어디에`알 수있는 사이트의 구조에 대해 알 필요가 없습니다

+0

코드가 Python 3에서 작동하지만 Python 2.7에서는 작동하지 않습니다. Python 2.7에서 작동하도록 제안 할 수 있습니까? –

+0

수정 사항을 참조하십시오. 그러나 Python 2를 사용해야하는 특별한 이유가 없으면 Python 3을 사용해야합니다. Python 2는 유산이며, 공식적으로 말하면 안됩니다 (https://wiki.python.org/). moin/Python2 또는 Python3). –

+0

Thanks @Stefano Sanfilippo 2to3 툴을 점검하여 코드를 변환 해 보겠습니다. 왜 2.7 버전을 사용하는 것이 여전히 좋은 생각인지 나는 몰랐다. –