Python剥离Google快讯URL

时间:2016-08-26 10:50:38

标签: python regex urllib2

我目前的数据框中包含Google Alert 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)获取网址元素列表...

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上发现了other queries同样的问题,但它们使用的是其他编程语言而不是Python。

关于Python方法的任何想法?

1 个答案:

答案 0 :(得分:1)

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

(?:^|&)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))