有一个包含带有参数的 URL 地址的列表:
http://example.com/?param1=apple¶m2=tomato¶m3=carrot
http://sample.com/?param1=banana¶m3=potato¶m4=berry
http://example.org/?param2=apple¶m3=tomato¶m4=carrot
每个 URL 可能包含 4 个参数中的任何一个。
我想提取 URL 参数并将它们添加到 Pandas DataFrame 中。DataFrame 应该有一个 URL 列和 4 个带参数的列。如果 URL 中不存在参数,则单元格为空:
URL param1 param2 param3 param4
... apple tomato carrot
... banana potato berry
... apple tomato carrot
我打算使用 python 内置的urlparse模块,它可以轻松提取参数:
import urlparse
url = 'http://example.com/?param1=apple¶m2=tomato¶m3=carrot'
par = urlparse.parse_qs(urlparse.urlparse(url).query)
print par['param1'], par['param2']
Out: ['apple'] ['tomato']
使用urlparse我可以获取 URL 中的参数列表:
import pandas as pd
urls = ['http://example.com/?param1=apple¶m2=tomato¶m3=carrot',
'http://sample.com/?param1=banana¶m3=potato¶m4=berry',
'http://example.org/?param2=apple¶m3=tomato¶m4=carrot']
df = pd.DataFrame(urls, columns=['url'])
params = [urlparse.parse_qs(urlparse.urlparse(url).query) for url in urls]
print params
Out: [{'param1': ['apple'], 'param2': ['tomato'], 'param3': ['carrot']},
{'param1': ['banana'], 'param3': ['potato'], 'param4': ['berry']},
{'param2': ['apple'], 'param3': ['tomato'], 'param4': ['carrot']}]
...
我不知道如何将提取的参数添加到 DataFrame 中。也许有更好的方法来做到这一点?原始文件是~1m URL。