如何使用python来解释一个url

时间:2016-09-17 23:44:56

标签: python beautifulsoup

我正在编写试图从Library of Babel中提取文本的代码。

他们基本上使用Hexes,Walls,Shelfs,Volumes和Pages系统来分割他们随机生成的文本文件库。这是一个例子(https://libraryofbabel.info/book.cgi?2-w1-s2-v22:1) 这里我们有Hex:2,Wall:1,Shelf:2,Volume:22,Page:1。

理想情况下,我想在所有这些变量中随机生成一个页面来提取文本,但是我没有得到我想象的输出。

这是我的代码:

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

如果我将网址更改为https://libraryofbabel.info/browse.cgi,我的输出将与我的输出完全相同。 print(babel_url)告诉我,我写这个url的方式很好,但有些东西并没有按照我想要的方式解释我所写的内容。

我发现只需将https://libraryofbabel.info/book.cgi?2-w1-s2-v22:1粘贴到Chrome中就可以让我https://libraryofbabel.info/book.cgi。但如果我导航到https://libraryofbabel.info/book.cgi?2-w1-s2-v22:1(或任何其他页面),我可以随意在页面之间移动。

我在输出中唯一值得一提的是:

  

您的浏览器似乎已禁用javascript。点击此链接即可浏览,无需使用javascript。

1 个答案:

答案 0 :(得分:3)

戴上眼镜:
您正在申请browse.cgi而不是book.cgi

https://libraryofbabel.info/browse.cgi?2-w2-s1-v10:72
而不是 https://libraryofbabel.info/book.cgi?2-w2-s1-v10:72