gpt4 book ai didi

Python 抓取删除重复项

转载 作者:太空宇宙 更新时间:2023-11-04 04:30:26 25 4
gpt4 key购买 nike

我不想有一个电子邮件地址两次,使用此代码我得到错误 类型错误:无法散列的类型:“列表”所以我假设这条线 所有链接=设置()是错误的,我必须使用元组而不是列表,对吗?

那是我的代码:

import requests
from bs4 import BeautifulSoup as soup
def get_emails(_links:list):

for i in range(len(_links)):
new_d = soup(requests.get(_links[i]).text, 'html.parser').find_all('a', {'class':'my_modal_open'})
if new_d:
yield new_d[-1]['title']


start = 20
while True:
d = soup(requests.get('http://www.schulliste.eu/type/gymnasien/?bundesland=&start={page_id}'.format(page_id=start)).text, 'html.parser')
results = [i['href'] for i in d.find_all('a')][52:-9]
results = [link for link in results if link.startswith('http://')]



next_page=d.find('div', {'class': 'paging'}, 'weiter')

if next_page:

start+=20

else:
break

allLinks= set()

if results not in allLinks:


print(list(get_emails(results)))

allLinks.add(results)

最佳答案

您正在尝试将整个电子邮件列表作为单个条目添加到 set 中。

您想要的是将每个实际的电子邮件添加到单独的 set 条目中。

问题出在这一行:

allLinks.add(results)

它将整个 results 列表作为单个元素添加到 set 中,但这不起作用。改用这个:

allLinks.update(results)

这将使用 list 中的元素更新 set,但每个元素将是 set 中的单独条目。

关于Python 抓取删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52726818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com