我通常查找完整网址的方法是:
resp = urllib.request.urlopen('http://www.example.com')
base_url = resp.geturl()
# find the wanted (relative) url in the resp by using BeautifulSoup4
full_url = urljoin(base_url, relative_url)
但是,对于某些网站,例如http://www.titanquest.net/tq-forum/forums/72-Underlord, base_url 和 full_url 是错误的,因为 url 被重写(我假设)如下所示:
>>> full_url
'http://www.titanquest.net/tq-forum/forums/72-Underlord'
>>> relative_url
'threads/43456-Epic-items?s=26260c54fd856499bff7a57e3c7ceb94'
>>> urljoin(full_url, relative_url)
'http://www.titanquest.net/tq-forum/forums/threads/43456-Epic-items?s=26260c54fd856499bff7a57e3c7ceb94'
正确的网址应该是:
http://www.titanquest.net/tq-forum/threads/43456-Epic-items?s=26260c54fd856499bff7a57e3c7ceb94
我的问题是如何生成正确的 base_url 和 full_url。