gpt4 book ai didi

python - 为什么这个循环返回两次?

转载 作者:太空宇宙 更新时间:2023-11-04 10:51:46 27 4
gpt4 key购买 nike

我有以下代码:

import re
from bs4 import BeautifulSoup

f = open('AIDNIndustrySearchAll.txt', 'r')
g = open('AIDNurl.txt', 'w')
t = f.read()
soup = BeautifulSoup(t)

list = []
counter = 0

for link in soup.find_all("a"):
a = link.get('href')
if re.search("V", a) != None:
list.append(a)
counter = counter + 1

new_list = ['http://www.aidn.org.au/{0}'.format(i) for i in list]
output = "\n".join(i for i in new_list)

g.write(output)

print output
print counter

f.close()
g.close()

它基本上是浏览一个已保存的 HTML 页面并提取我感兴趣的链接。我是 Python 的新手,所以我确信代码很糟糕但它(几乎)可以工作;)

当前的问题是它返回每个链接的两个副本,而不是一个。我确信这与循环的设置方式有关,但有点卡住了。

我欢迎就此问题提供任何帮助(如果需要,我可以提供更多详细信息 - 例如 HTML 和有关我正在寻找的链接的更多信息)以及任何一般代码改进,以便我尽可能多地学习。

最佳答案

正如其他人在评论中指出的那样,您的循环看起来不错,因此重复很可能在 HTML 本身中。如果您可以共享指向 HTML 文件的链接,也许我们可以提供更多帮助。

至于一般的代码改进,以下是我可能采用的方法:

from bs4 import BeautifulSoup
soup = BeautifulSoup(open('AIDNIndustrySearchAll.txt', 'r'))

# create a generator that returns actual href entries
links = (x.get('href') for x in soup.find_all('a'))

# filter the links to only those that contain "V" and store it as a
# set to remove duplicates
selected = set(a for a in links if "V" in a)

# build output string using selected links
output = "\n".join('http://www.aidn.org.au/{0}'.format(a) for a in selected)

# write the string to file
with open('AIDNurl.txt', 'w') as f:
f.write(output)

print output
print len(selected) # print number of selected links

关于python - 为什么这个循环返回两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13377070/

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