在 python 中使用 urlparse 拆分多个 url

split multiple urls using urlparse in python

我有一个字符串,其中包含使用 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']

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

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

根据您的问题,您似乎有一个由新行分隔的 URL 列表。在这种情况下,您可以使用 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:

将其放入漂亮的 one-liner
list_pathlist = [urlparse(url)[2].split('/') for url in dat.split('\n')]