Я очищаю и загружаю ссылки с веб-сайта, и веб-сайт обновляется новыми ссылками каждый день.Мне бы хотелось, чтобы каждый раз, когда мой код запускался, он только очищал / загружал обновленные ссылки с момента последнего запуска программы, а не снова перебирал весь код.
Я пытался добавить ранее очищеннуюссылки на пустой список и выполнение остальной части кода (который загружает и переименовывает файл), только если очищенная ссылка не найдена в списке.Но, похоже, он работает не так, как хотелось бы, каждый раз, когда я запускаю код, он запускается «с 0» и перезаписывает ранее загруженные файлы.
Есть ли другой подход, который я должен попробовать?
Вот мой код (также открыт для общих советов о том, как это убрать и сделать лучше)
import praw
import requests
from bs4 import BeautifulSoup
import urllib.request
from difflib import get_close_matches
import os
period = '2018 Q4'
url = 'https://old.reddit.com/r/test/comments/b71ug1/testpostr23432432/'
headers = {'User-Agent': 'Mozilla/5.0'}
page = requests.get(url, headers=headers)
#set soup
soup = BeautifulSoup(page.text, 'html.parser')
table = soup.find_all('table')[0]
#create list of desired file names from existing directory names
candidates = os.listdir('/Users/test/Desktop/Test')
#set directory to download scraped files to
downloads_folder = '/Users/test/Desktop/Python/project/downloaded_files/'
#create empty list of names
scraped_name_list = []
#scrape site for names and links
for anchor in table.findAll('a'):
try:
if not anchor:
continue
name = anchor.text
letter_link = anchor['href']
#if name doesn't exist in list of names: append it to the list, download it, and rename it
if name not in scraped_name_list:
#append it to name list
scraped_name_list.append(name)
#download it
urllib.request.urlretrieve(letter_link, '/Users/test/Desktop/Python/project/downloaded_files/' + period + " " + name + '.pdf')
#rename it
best_options = get_close_matches(name, candidates, n=1, cutoff=.33)
try:
if best_options:
name = (downloads_folder + period + " " + name + ".pdf")
os.rename(name, downloads_folder + period + " " + best_options[0] + ".pdf")
except:
pass
except:
pass
#else skip it
else:
pass