我试图让标题更清晰,但它确实需要更多的措辞。
我需要做什么:
我有一个网址列表。在每个URL(实际网站)中,HTML中包含文件名。我已经删除了一个网站以获取每个URL的列表以及每个URL中包含的所有文件名的另一个列表,并且所有文件名都在同一列表中。
我需要将每个URL中每个文件的名称附加到它们各自的页面(文件名前面的URL)。
列表示例:
list1 = ['www.something.com/a/','www.something.com/b/','www.something.com/c/']
list2 = ['adam.html','addison.html','bob.html','boris.html','claire.html','clarence.html']
URL的结构是按字母顺序排列的,每个文件名都以相应的字母开头。
例如:我想要www.something.com/a/
并将所有文件名附加到创建完整网址列表(及其文件名),例如www.something.com/a/adam.html
,www.something.com/a/addison.html
。
完成/a/
后,循环移至www.something.com/b/
并附加b
个文件名,如www.something.com/b/bob
,www.something.com/b/boris
我已经考虑了一段时间了。显然,第一个障碍是我组合的列表是不同的长度。此外,我目前还没有以前/ home网址分隔的文件名列表。我想也许我可以将它们循环到字典/数组中,其中的键是字母或主页,但是我不确定这是怎么做的,因为我对这一切都很新。 / p>
编辑以添加代码:
def get_top_urls(letters):
top_url_list = []
for letter in letters:
top_url_list.append("http://www.basketball-reference.com/players/%s" % letter)`
player_urls = []
for i in top_url_list:
result = re.findall("\/([a-z]+[0-9][0-9]\W[a-z]+)", str(urlopen(i).read()))
player_urls.append(result)
return player_urls
#for i in top_url_list:
if __name__ == '__main__':
main()
top_urls
和player_urls
我需要相互追加以获取我最终需要的所有网址的列表。
任何人都可以帮助我吗?
答案 0 :(得分:0)
试试这个:
list1 = ['www.something.com/a/','www.something.com/b/','www.something.com/c/']
list2 = ['adam.html','addison.html','bob.html','boris.html','claire.html','clarence.html']
list3 = []
for item in list1:
letter = item[item.rfind('/')-1:item.rfind('/')]
print(item)
for each in list2:
if each[0] == letter:
list3.append(item + each)
print (list3)
答案 1 :(得分:0)
并且所有文件名都在同一个列表中。
那是你的实际问题;而不是将结果放入平面列表,然后尝试将它们排序,只需使用字典来保持它们的正确关联:
goto
现在您的def get_urls(letters):
url_dict = {}
for letter in letters:
top_url = "http://whatever.com/{}/".format(letter)
result = re.findall("\/([a-z]+[0-9][0-9]\W[a-z]+)", str(urlopen(top_url).read()))
url_dict[top_url] = result
return url_dict
看起来像:
url_dict
你可以通过恰当的加入获得所有网址:
{'http://whatever.com/a/': ['addison.html', 'avery.html'],
'http://whatever.com/b/': ['bob.html', 'boris.html'],
...
}
请注意,如果你想要的只是最终列表,你可以加入原始函数并返回最终列表开头:
all_urls = [''.join(top, name) for top, names in url_dict.items() for name in names]