如果已经废弃了相同的href,请删除它

时间:2016-04-10 00:48:04

标签: python if-statement beautifulsoup

我正在废弃一个网站而我不打算打印两个相同的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)

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

2 个答案:

答案 0 :(得分:1)

您不需要任何条件语句来执行此操作。您只需使用set buit-in从结果中删除重复项。

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

答案 1 :(得分:0)

您可以尝试在set上使用find_all,但您仍然很可能有重复项,因为该对象可能有所不同,但仍然包含相同的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)