Обновление - я попытался включить полный путь к заданию crontab, но та же проблема повторяется ... У меня проблема только с этой конкретной статьей, которая содержит латинский символ "Moët"
Я новичокв Python 3, и мне нужна помощь с проблемой, связанной с «конфликтом кодировки Юникода».
Я создаю веб-скребок, который берет онлайн-статьи и сохраняет их локально.
Что я хотел бы сделатьis:
- используйте Beautifulsoup для получения заголовка статьи
- проверьте, что заголовок статьи отсутствует в списке статей, сохраненных локально
- , если заголовок совпадает, затем напечатайте"файл существует" ничего не делать.
- если заголовок не совпадает, то перехватить содержимое статьи и сгенерировать файл .txt.
код выглядит следующим образом:
article_html = self.request(articles_URL)
soup = BeautifulSoup(article_html.text, 'html.parser')
title_modify = soup.title.string
title_real = title_modify + '.txt'
current_path = os.getcwd()
article_names = os.listdir(current_path)
if title_real in article_names:
print(title_real, 'exists, no need to re-create')
else:
###omit codes for catching article content
with codecs.open(title_real, "a", encoding='utf-8') as f:
f.write(XXX)
Затем я использую запланированное задание crontab Centos 7, чтобы оно запускалось автоматически.он будет каждый день обнаруживать один и тот же веб-URL и пытаться перехватить новую статью как текстовый файл.
Он работал нормально, однако сегодня я заметил, что он не работает для заголовка статьи, который содержит латинский символ.В идеале система напечатает «файл существует» и перейдет к следующей статье, однако показывает, что программа создала несколько дублирующих статей:
Aug 26 09:50 XXX with Moët XXX.txt
Aug 27 09:29 XXX with Moët XXX (Unicode Encoding Conflict (1)).txt
Aug 26 20:30 XXX with Moët xxx (Unicode Encoding Conflict).txt
СтранноДело в том, что он работает нормально, когда я вручную запускаю скрипт Python :
python test.py
XXX with Moët XXX.txt exists, no need to re-create
Очень признателен, если кто-нибудь может помочь.
Повар