我目前有一个充满 Google 提醒网址的数据框,如下所示:
link = 'https://www.google.com/url?rct=j&sa=t&url=http://3dprint.com/4353/littledlper-dlp-3d-printer-kickstarter/&ct=ga&cd=CAEYBCoSODQ1OTg1ODMwMzQwNDUzMTUxMhw2NTFlMTg3MTI1ZGE4Nzc3OmNvLnVrOmVuOkdC&usg=AFQjCNF0HOEhqIZHEpdkH1eVdXt-JRBF3Q'
我只想要 url=
之后和垃圾之前的部分。
http://3dprint.com/4353/littledlper-dlp-3d-printer-kickstarter/
我使用 urllib.parse.urlparse(link)
来获取 URL 元素列表...
parsed = ParseResult(scheme='https', netloc='www.google.com', path='/url', params='', query='rct=j&sa=t&url=http://3dprint.com/4353/littledlper-dlp-3d-printer-kickstarter/&ct=ga&cd=CAEYBCoSODQ1OTg1ODMwMzQwNDUzMTUxMhw2NTFlMTg3MTI1ZGE4Nzc3OmNvLnVrOmVuOkdC&usg=AFQjCNF0HOEhqIZHEpdkH1eVdXt-JRBF3Q', fragment='')
但即便如此 parsed[4]
也只能将其分解为...
'rct=j&sa=t&url=http://3dprint.com/4353/littledlper-dlp-3d-printer-kickstarter/&ct=ga&cd=CAEYBCoSODQ1OTg1ODMwMzQwNDUzMTUxMhw2NTFlMTg3MTI1ZGE4Nzc3OmNvLnVrOmVuOkdC&usg=AFQjCNF0HOEhqIZHEpdkH1eVdXt-JRBF3Q'
我找到了other queries在 Stack 上也有同样的问题,但他们使用的是 Python 之外的其他编程语言。
关于 Python 方法有什么想法吗?
最佳答案
您可以在 parsed[4]
上使用正则表达式来提取该 URL:
(?:^|&)url=([^&]+)
请参阅regex demo
详细信息:
(?:^|&)
- 字符串开头或&
url=
- 文字文本url=
([^&]+)
- 第 1 组捕获除&
之外的一个或多个符号。
import re
p = re.compile(r'(?:^|&)url=([^&]+)')
s = "rct=j&sa=t&url=http://3dprint.com/4353/littledlper-dlp-3d-printer-kickstarter/&ct=ga&cd=CAEYBCoSODQ1OTg1ODMwMzQwNDUzMTUxMhw2NTFlMTg3MTI1ZGE4Nzc3OmNvLnVrOmVuOkdC&usg=AFQjCNF0HOEhqIZHEpdkH1eVdXt-JRBF3Q"
mObj = p.search(s)
if mObj:
print(mObj.group(1))
关于Python 剥离 Google 快讯 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39164524/