首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从简写或重定向的URL中获得真正的(最终) url?(用于使用python进行抓取)

如何从简写或重定向的URL中获得真正的(最终) url?(用于使用python进行抓取)
EN

Stack Overflow用户
提问于 2022-06-21 09:12:03
回答 1查看 49关注 0票数 -1

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

重定向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)

最终网址:https://n.news.naver.com/article/009/0004980823 (这是我想要的最终网址。)

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

使用代码??强文本从可接受的URL中查找最终URL的任何方法。

EN

回答 1

Stack Overflow用户

发布于 2022-06-21 09:38:43

使用

代码从可接受的URL中查找最终URL的方法

简单答案

代码语言:javascript
复制
>>> 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编码的。只要破译就行了。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72698128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档