python - unicode编码冲突
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python - unicode编码冲突相关的知识,希望对你有一定的参考价值。
更新 - 我试图包含crontab作业的完整路径,但同样的问题再次发生...我只对这篇包含拉丁字符“Moët”的特定文章有疑问
我是python 3的新手,我需要有关“unicode编码冲突”相关问题的帮助。
我正在创建一个Web抓取工具,它可以获取在线文章并将其保存在本地。
我想做的是:
- 使用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)
然后我使用预定的Centos 7 crontab作业让它自动运行。它将每天检测相同的Web URL,并尝试将新文章作为txt文件捕获。
它工作正常,但今天我发现它不适用于包含拉丁字符的文章标题。理想情况下,系统将打印“文件存在”并转到下一篇文章,但是,它显示程序创建了一些重复的文章:
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
非常感谢,如果有人可以提供帮助。
厨师
答案
Crontab最有可能使用可能导致意外行为的精简环境。请参阅this,它很可能会解决您的问题。
基本上你需要提供你的python可执行文件的完整路径(你可以通过运行which python
来获得它)。你会看到crontab条目如下所示:
20 4 * * * your_python_path your_program_path.py
以上是关于python - unicode编码冲突的主要内容,如果未能解决你的问题,请参考以下文章