Python 剥离 Google 快讯 URL

标签 python regex urllib2

我目前有一个充满 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 组捕获除 & 之外的一个或多个符号。

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

关于Python 剥离 Google 快讯 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39164524/

相关文章:

python - 在处理调查数据时,如何合并 pandas 中的列?

regex - 在 elisp 中寻找替换字符串函数

c - 如何使用正则表达式来匹配字符串的一部分

python - 调用 urllib.urlopen 时的 Trace/BPT 陷阱

python - Ubuntu 18.04 python 2.7 urllib 请求没有获取数据

python - 尝试保存 tkInter 比例的值

python - 在 python 中返回多个值时的不同结果(Cryptopal 挑战)

python - 我想测量代码中 Action 之间传递的时间

python - 在特定条件下在 python 中迭代 CSV 文件

xQuery 中用于标记化的正则表达式