如果同一个href已被刮除,则删除该href

2024-06-16 08:43:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在抓取一个网站,我不想打印两个相同的href,但只打印一个。我搞不懂,有人能给我一个直觉来跟随吗

url = "http://www.fveconstruction.ch/anMetier.asp?M=04&R=4&PageSize=1000&BoolsMember=0"
get_url = requests.get(url)
get_text = get_url.text
soup = BeautifulSoup(get_text, "html.parser")
for link in soup.find_all("a", href=re.compile('anDetails.asp')):
    href = link.get('href')
    #If statement ?
        
    print(href)

例如,在这里,如果a运行代码,我将使每个href链接加倍。是否有if语句删除并保留其中一个


Tags: texthttpurlget网站wwwlinkch
2条回答

这样做不需要任何条件语句。您只需使用^{}内置函数从结果中删除重复项

soup = BeautifulSoup(get_text, "html.parser")
links = {link['href'] for link in soup.find_all("a", href=re.compile('anDetails.asp'))} 
print(links)

您可以尝试在find_all上使用set,但仍然很可能有重复项,因为对象可能不同,但仍然包含相同的href

在这种情况下,您只需创建一个列表并将每个href附加到列表中

然后,您可以创建一个if条件来检查它是否已经在列表中,然后再打印出来

所以你应该

href_list = []
for link in soup.find_all("a", href=re.compile('anDetails.asp')):

    href = link.get('href')
    if href not in href_list:
        print(href)
        href_list.append(href)

相关问题 更多 >