我有一个重定向(即HTTP 302)到实际网站的URL。然后我解析。但是,我想获得网站的实际URL(即真正的URL)。有没有办法在BeautifulSoup中这样做。
即www.bananas.com - 重定向 - > www.realfruit.com。它是www.realfruit.com网址,我希望以字符串形式获取。
答案 0 :(得分:2)
HTML页面的URL是HTTP元数据,实际上与HTML源无关。 BeautifulSoup传递HTML源(以文件对象或字符串的形式),不 HTTP上下文。它并不知道任何关于来源的来源。
充其量,如果运气好的话,HTML源代码会包含canonical URL <link>
tag,这是搜索引擎在尝试再次将人们引导到同一页面时应使用的网址。但是,这不一定是用于在将页面交给BeautifulSoup之前加载页面的实际URL!
如果您使用requests
加载网页,只需询问 it 以获取网址。 response.url
告诉您响应加载的URL。您可以使用response.history
访问重定向历史记录,其中包含导致最终响应的任何30x响应。
urllib2
个回复的.geturl()
method会返回使用的最终网址;同样适用于Python 3&#39; urllib.request.urlopen()
responses。