Python可以在重写url时确定正确的基url

2024-06-12 01:42:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我找到完整url的常用方法是:

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,基本url和完整url都是错误的,因为url被重写(我假设),如下所示:

^{pr2}$

正确的url应该是:

http://www.titanquest.net/tq-forum/threads/43456-Epic-items?s=26260c54fd856499bff7a57e3c7ceb94

我的问题是如何生成正确的基本url,从而生成完整的url。在


Tags: the方法httpurlbasenetrequestwww
1条回答
网友
1楼 · 发布于 2024-06-12 01:42:25

您的浏览器通常确实使用当前页面的位置作为相对url的基础,而使用urljoin可以正确地模拟这种行为。在

但是,如果返回的HTML包含一个^{} tag,浏览器将使用由该标记命名的url作为解析相对url的基础。<base />标记是HTML头部的一部分。在

您需要解析http://www.titanquest.net/tq-forum/forums/72-Underlord的响应以确定是否存在这样的标记,然后使用其值而不是页面的URL来确定相对URL。<base href="link" />链接值本身可能是相对的,在这种情况下,必须首先根据文档位置将其设为绝对值。在

在这种特殊情况下,网页包含这样一个<base />标记:

<base href="http://www.titanquest.net/tq-forum/" /><! [if IE]></base><![endif] >

相关问题 更多 >