while True:
if bbs_number > lately_number():
sys.stdout = open('date.txt','a')
bbs_lists = range(highest_number() +1, bbs_number +1)
for item in bbs_lists:
url_number = "url" + str(item)
try:
result = requests.get(url_number)
bs_number = BeautifulSoup(result.content, "lxml")
float_box = bs_number.find("div", {"class": "float_box"})
parameter_script = float_box
print("bs_obj()")
except AttributeError as e:
print("error")
with open('lately_number.txt', 'w') as f_last:
f_last.write(str(bbs_number))
使用上面的while语句不会导致错误,但是重复的数据将输出到date.txt
。
我想在设置range
的早期阶段进行修改,而不是在稍后的阶段date.txt
中删除重复项。
一种可能性是,现有的lately_number()
将向range
输出重复的date.txt
,因为有时无法在{{1}的写入过程中正确输入该值}。
如果能帮助我提供更好的函数表达式来添加或替换,我将不胜感激。
答案 0 :(得分:0)
最简单的方法是将date.txt读入一组。然后,您可以检查该集合以查看日期是否已经存在,如果没有,则将该日期写入date.txt文件。
E.G。
uniqueDates = set()
#read file contents into a set.
with open("date.txt", "r") as f:
for line in f:
uniqueDates.add(line.strip()) #strip off the line ending \n
#ensure what we're writing to the date file isn't a duplicate.
with open("date.txt", "a") as f:
if("bs_obj()" not in uniqueDates):
f.write("bs_obj")
您可能需要稍微调整一下逻辑以适合您的需求,但是,我相信这就是您要实现的目标?