接受网址:https://naver.me/xDMa0YE6 (这是来自app的缩短网址)
最终网址:https://n.news.naver.com/article/009/0004980823 (这是我想要的最终网址。)
当我试图抓取接受的URL时,它被链接到重定向的URL,并且无法刮除html.(使用bs4)
使用代码??强文本从可接受的URL中查找最终URL的任何方法。
发布于 2022-06-21 09:38:43
使用
代码从可接受的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编码的。只要破译就行了。
https://stackoverflow.com/questions/72698128
复制相似问题