我正在废弃一个网站而我不打算打印两个相同的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语句删除并保留其中一个?
答案 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)