我怎么能得到真正的(最终)URL从缩短或重定向URL ?(用于使用python刮痧)



接受URL: https://naver.me/xDMa0YE6(这是来自app的缩短URL)

重定向URL: https://link.naver.com/bridge?url=https%3A%2F%2Fn.news.naver.com%2Farticle%2F009%2F0004980823&dst=naversearchapp%3A%2F%2Finappbrowser%3Furl%3Dhttps%253A%252F%252Fn.news.naver.com%252Farticle%252F009%252F0004980823%26version%3D10%26sourceReferer%3Dshare(这是从接受的URL重定向的URL)

最终URL: https://n.news.naver.com/article/009/0004980823(这是我想要删除的最终URL。

当我试图抓取接受的URL时,它被链接到重定向URL,并且无法抓取html…(使用bs4)

使用Python代码从接受的URL中找到最终URL的任何方法?<<strong>强大的文本/strong>

使用Python代码从接受的URL中查找最终URL的方法

简单的答案

>>> import requests
>>> r = requests.get(' https://naver.me/xDMa0YE6',allow_redirects = False)
>>> r.headers['Location']
'https://link.naver.com/bridge?url=https%3A%2F%2Fn.news.naver.com%2Farticle%2F009%2F0004980823&dst=naversearchapp%3A%2F%2Finappbrowser%3Furl%3Dhttps%253A%252F%252Fn.news.naver.com%252Farticle%252F009%252F00
04980823%26version%3D10%26sourceReferer%3Dshare'
>>> redirected = r.headers['Location']
>>> redirected.find('&')
93
>>> redirected.find('?url=')
29
>>> redirected[29+5:93]
'https%3A%2F%2Fn.news.naver.com%2Farticle%2F009%2F0004980823'
>>> from urllib.parse import unquote
>>> unquote(redirected[29:93])
'?url=https://n.news.naver.com/article/009/0004980823'
>>> unquote(redirected[29+5:93])
'https://n.news.naver.com/article/009/0004980823'

原因:

当您请求缩短的链接时,您可能会得到一个响应,告诉您的浏览器重定向,因此我们allow_redirects = False并在响应中获得重定向的链接(通过检查响应)。

仔细检查链接,您会发现一个url=参数,其中包含您需要的最终链接,但是是URL编码的。只要解码就行了。

最新更新