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 출력에서 언급 할 가치가 얻을 수있는 유일한 방법은 다음과 같습니다
귀하의 브라우저가 자바 스크립트 비활성화가 나타납니다. 이 링크를 따라 자바 스크립트없이 찾아보십시오. 당신이 안경
book.cgi
의browse.cgi
를 요청? – ozgur나는 동일한 출력을 얻는다, 나는 URL가 정확하게 해석되고 있지 않다는 느낌이 들었다. 출력은 단지 자바 스크립트 주석 뒤에 도움이되지 않습니다. 약 2 ~ 50 줄 정도되는 것 같습니다. – TheMetaHorde
흥미 롭습니다. 터미널에서 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