簡體   English   中英

python-Unicode編碼沖突

[英]python - unicode encoding conflict

更新-我嘗試包括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最有可能使用了精簡的環境,這可能會導致意外行為。 看到這個 ,很可能會解決您的問題。

基本上,您需要提供python可執行文件的完整路徑(您可以通過運行which python來獲取它)。 因此,您的crontab條目將如下所示:

20 4 * * * your_python_path your_program_path.py

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM