Python 删除 Google 警报 URL

Python strip Google Alerts URL

我目前有一个充满 Google 警报 URLS 的数据框,看起来像:

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'

我在 Stack 上发现 queries 有同样的问题,但它们使用的是 Python 以外的其他编程语言。

对 Python 方法有什么想法吗?

您可以在 parsed[4] 上使用正则表达式来提取 URL:

(?:^|&)url=([^&]+)

regex demo

详情:

  • (?:^|&) - 字符串开头或 &
  • url= - 文字 url=
  • ([^&]+) - 第 1 组捕获除 &.
  • 以外的一个或多个符号

Python demo:

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))