我正在使用BeautifulSoup提取标记为=的所有标记,以邮寄到。我正在自己的网站上运行它。我唯一的问题是让我说过两次电子邮件。我只希望它一次将其存储到数组中。通过该商店,我还存储了url的路径。现在将其保持简单,并使其只是一个“ /”。
我需要一种方法来遍历每个元素,找到“ url”并检查值。如果不存在,请将其添加到数组中。
这里是我得到的,但这是不正确的。
def remove_duplicates(arr):
final_list = []
for page, data in enumerate(arr):
if not final_list:
final_list.append({'page': '/', 'url': data["url"]})
print(final_list)
pageData = urllib.request.urlopen('<anysite>').read()
soup = BeautifulSoup(pageData, 'html.parser')
initialData = []
data = []
for i in soup.find_all("a", href=lambda href: href and "mailto" in href):
initialData.append({'page': '/', 'url': i.text})
remove_duplicates(initialData)
答案 0 :(得分:0)
如果“我唯一的问题”是我已经提到我的电子邮件两次。我只希望它一次将它存储到数组中。 然后,我建议您设置要设置的列表,然后再使其返回列表。这样可以消除重复的数据。
k = ['hello','world','hello']
set(k)
{'hello', 'world'}
list(set(k))
['hello', 'world']
要检查列表中是否存在值,可以使用not in
关键字。
示例:
ls = [{'google': 'www.google.com'},{'facebuk': 'www.facebuk.com'},{ 'sample': 'www.sample.com'}, { 'sample': 'www.sample.com'}]
现在您可以执行此操作以删除重复项。
>>> [dict(t) for t in {tuple(d.items()) for d in ls}]
[{'google': 'www.google.com'}, {'sample': 'www.sample.com'}, {'facebuk': 'www.facebuk.com'}]
希望有帮助。