在python

时间:2017-01-28 22:39:01

标签: python urlparse

我有一个字符串,其中包含使用BeautifulSoup提取的多个网址,我希望将所有这些网址拆分为提取日期和年份(网址中包含日期和年份)。

print(dat)
http://www.foo.com/2016/01/0124
http://www.foo.com/2016/02/0122
http://www.foo.com/2016/02/0426
http://www.foo.com/2016/03/0129
.
.

我尝试了以下内容,但它只检索了第一个:

import urlparse
parsed = urlparse(dat)
path = parsed[2] #defining after www.foo.com/
pathlist = path.split("/")

['', '2016', '01', '0124']

所以我只得到字符串的第一个元素的结果。 如何检索所有网址的这些解析,并存储它们以便我可以提取信息?我想知道有多少年份和月份的链接。

同样奇怪的是,在执行此操作后,当我执行print(dat)时,我只获得第一个元素http://www.foo.com/2016/01/0124,似乎urlparse不适用于多个网址。

1 个答案:

答案 0 :(得分:2)

根据您的问题,您看起来有一个由新行分隔的网址列表。在这种情况下,您可以使用for循环来迭代它们:

list_pathlist = []
for url in dat.split('\n'):
    parsed = urlparse(url)
    path = parsed[2] #defining after www.foo.com/
    pathlist = path.split("/")
    list_pathlist.append(pathlist)

在这种情况下,我怀疑结果(list_pathlist)将类似于:

[['', '2016', '01', '0124'],['', '2016', '02', '1222'],...]

所以列表

或者你可以使用 list-comprehension 将它放入一个漂亮的单行中:

list_pathlist = [urlparse(url)[2].split('/') for url in dat.split('\n')]