2016-09-17 4 views
0

Library of Babel에서 텍스트를 추출하는 코드를 작성하고 있습니다.python을 사용하여 URL을 해석하는 방법

기본적으로 Hexes, Walls, Shelfs, Volumes 및 Pages 시스템을 사용하여 무작위로 생성 된 텍스트 파일의 라이브러리를 분할합니다. 여기에 예제가 있습니다 (https://libraryofbabel.info/book.cgi?2-w1-s2-v22:1) 여기에 우리는 16 진수 : 2, 벽 : 1, 선반 : 2, 볼륨 : 22, 페이지 : 1.

이 변수들을 추출하기 위해 페이지를 무작위로 생성하고 싶습니다. 텍스트에서, 그러나 나는 내가 상상할 수있는 출력을 얻지 못하고있다. 내가 https://libraryofbabel.info/browse.cgi를 할 URL을 변경 한 경우

import requests 
from bs4 import BeautifulSoup 
from urlparse import urlparse 
import random 

hex = str(random.randint(0, 6)) 
wall = str(random.randint(1, 4)) 
shelf = str(random.randint(1, 5)) 
vol = str(random.randint(1, 32)) 
page = str(random.randint(1, 410)) 

print("Fetching: " + " Hex: " + hex + ", Wall: " + wall + ", Shelf: " + shelf + ", Vol: " + vol + ", Page: " + page) 
babel_url = str("https://libraryofbabel.info/browse.cgi?" + hex + "-w" + wall + "-s" + shelf + "-v" + vol + ":" + page) 
r = requests.get(babel_url) 
soup = BeautifulSoup(r.text) 
print(soup.get_text()) 

내 출력과 동일 할 것입니다 :

여기 내 코드입니다. print (babel_url)는 내가 URL을 작성한 방식이 훌륭하다는 것을 보여 주지만 내가 원하는 방식으로 내가 작성한 것을 해석하지 못한다.

크롬에 https://libraryofbabel.info/book.cgi?2-w1-s2-v22:1을 붙여 넣으면 https://libraryofbabel.info/book.cgi이 나옵니다. 그러나 https://libraryofbabel.info/book.cgi?2-w1-s2-v22:1 (또는 다른 페이지)으로 이동하면 자유롭게 페이지간에 이동할 수 있습니다.

I 출력에서 ​​언급 할 가치가 얻을 수있는 유일한 방법은 다음과 같습니다

귀하의 브라우저가 자바 스크립트 비활성화가 나타납니다. 이 링크를 따라 자바 스크립트없이 찾아보십시오. 당신이 안경

+0

book.cgibrowse.cgi를 요청? – ozgur

+0

나는 동일한 출력을 얻는다, 나는 URL가 정확하게 해석되고 있지 않다는 느낌이 들었다. 출력은 단지 자바 스크립트 주석 뒤에 도움이되지 않습니다. 약 2 ~ 50 줄 정도되는 것 같습니다. – TheMetaHorde

+0

흥미 롭습니다. 터미널에서 URL을 테스트 한 결과 html 콘텐츠를 얻을 수있었습니다. 또한 http : //100.15.190.133/book.cgi? 2-w1-s2-v22 : 1과 같은 IP 주소로 URL을 테스트 할 수 있습니까? 내 HTTP 요청의 헤더는 다음과 같습니다 :'{ 'Connection': 'keep-alive', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'User-Agent': ' python-requests/2.11.0 '}'다음과 같이하면 확인할 수 있습니다 :'print (r.request.headers)' – ozgur

답변

관련 문제