如何用Python获取非跳转真实URL 提取爬虫爬取的重定向链接实际地址
解决方法
你拿到的是谷歌搜索的跳转链接,现有代码只拆分了前缀,没有去掉后续的谷歌跟踪参数,也没有处理Facebook子页面的多余路径,按以下方案实现即可:
实现逻辑
- 用Python内置的
urllib.parse模块解析跳转链接,直接提取q参数对应的真实目标地址,自动处理URL编码和参数剥离 - 解析得到的Facebook链接,提取域名后的第一级路径作为商家主页地址
完整代码示例
from urllib.parse import urlparse, parse_qs, urlunparse def get_facebook_merchant_url(google_redirect_url): # 解析谷歌跳转链接,提取q参数的真实地址 parsed_redirect = urlparse(google_redirect_url) query_params = parse_qs(parsed_redirect.query) if 'q' not in query_params: return None raw_target_url = query_params['q'][0] # 解析Facebook目标链接,提取商家主页根路径 parsed_fb = urlparse(raw_target_url) # 拆分路径,取第一个非空的路径段(即商家ID) path_segments = [seg for seg in parsed_fb.path.split('/') if seg] if not path_segments: return None merchant_path = path_segments[0] # 拼接成最终的商家主页URL return urlunparse(( parsed_fb.scheme, parsed_fb.netloc, f'/{merchant_path}', '', '', '' )) # 测试用例 p= '/url?q=https://www.facebook.com/bespokecatering.sydney/videos/lockdown-does-not-mean-unfulfilled-cravings-order-our-weekly-favorites-order-her/892336708293067/%3Fextid%3DSEO----&sa=U&ved=2ahUKEwjTv6ueseHyAhUHb30KHYTYABwQuAJ6BAgEEAI&usg=AOvVaw0t_X8a-7BUi699tTtT9Av4' print(get_facebook_merchant_url(p))
运行后输出结果正好是你需要的格式:https://www.facebook.com/bespokecatering.sydney
方案优势
- 不用手动拆分字符串,避免出现参数位置变化、多参数等异常情况导致的提取错误
- 自动处理URL编码字符,兼容更多格式的跳转链接
内容的提问来源于stack exchange,提问作者Ahina7
相关产品推荐
相关产品推荐

