【问题标题】:SyntaxError: Non-UTF-8 code starting with '\xd8' in fileSyntaxError: 文件中以 '\xd8' 开头的非 UTF-8 代码
【发布时间】:2017-04-25 12:21:51
【问题描述】:

我使用波斯语网站来爬取网站,并使用我的 python 3.4 代码通过 lxml 库获取数据和文本。此时一切都很好

text = "['هواداران استقلال از نخستین ساعات صبح امروز راهی ورزشگاه آزادی شدند.', 'به گزارش کاپ، در شرایطی که بازی امروز استقلال و الاهلی امارات از ساعت 20:15 در ورزشگاه آزادی آغاز می شود، در فاصله کمتر از 8 ساعت تا شروع مسابقه، تعدادی از هواداران آبی پوش مقابل درب غربی آزادی جمع شده اند.', 'البته درهای ورزشگاه آزادی هنوز باز نشده و بلیت فروشی نیز صورت نگرفته است.', 'بلیت فروشی بازی امروز به صورت حضوری انجام می شود و به همین دلیل استقلالی ها مجبور هستند برای استقرار در جای بهتر، زودتر در ورزشگاه حاضر شوند.', 'همچنین تعدادی از لیدرهای استقلال نیز صبح روز xa0بازی در حال ترمیم و تکمیل طرح موزاییکی خود بودند که دیروز به دلیل طوفان تهران تعدادی از قطعات آن کنده شده بود.']نیوکاسل توانست به لیگ برتر انگلیس صعود کند.به گزارش کاپ، دوشنبه شب نیوکاسل توانست پرستون نورث اند را با نتیجه 4 بر یک شکست داده و به لیگ برتر انگلیس صعود کند.به این ترتیب رافائل بنیتز فصل بعد در لیگ برتر جزیره فعالیت خواهد کرد."
#print2file(title, text, 14)
#u = unicode(text, "utf-8")
print(text)

错误:

SyntaxError: Non-UTF-8 code starting with '\xd8' in file D:/Users/Documents/PyCharm/WEB/Crawler-04.py on line 74, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

Code

【问题讨论】:

  • 确保将文件保存为 UTF-8。你用的是哪个编辑器?
  • 您的文本不是 UTF-8 编码的。将您的编辑器配置为另存为 UTF-8,或完全按照错误消息告诉您的方式设置编码声明。
  • 我使用 Pychrm IDE 并从站点 cup.ir/sport/latestarchive/0/page 和 page_link = requests.get(link) tree = html.fromstring(page_link.text) title = tree.xpath('//meta[ @property="og:title"]/@content')[0] text = tree.xpath('//*/p/text()')[2:-2]
  • 我有一个简单的约会 text = "string" 文件中的以下代码以 open(name_file, 'w') 作为文件进行打印: file.write(title) file.write (文字)
  • @MortezaM,这是关于源代码文件的编码方式,即。 Crawler-04.py.

标签: python python-3.x printing utf-8


【解决方案1】:

将此行放在代码的第一行:

# This Python file uses the following encoding: utf-8

更多信息:www.python.org/dev/peps/pep-0263/#examples

【讨论】:

    【解决方案2】:

    终于解决了我的问题 弓码是正确的:

    # # # # Import # # # #
    from lxml import html
    import requests
    from time import sleep
    import codecs
    
    # # # #         # # # #
    
    site    = "http://cup.ir/sport/latestarchive/0/page"
    number  = 100
    
    # # # #         # # # #
    
    def crawl(starting_url):
        print("----- crawl -----")
        counter = 1
        page = 1
        start_page = requests.get(starting_url)
        tree = html.fromstring(start_page.text)
        #((page - 1) * counter) + counter )
        while ( (((page-1)*49) + counter) <= number ):
            if (counter >= 49 )&(counter % 49 ==0):
                #print("Error::No another link in page")
                page += 1
                link = starting_url + "/" + str(page)
                print(link)
                start_page = requests.get(link)
                tree = html.fromstring(start_page.text)
                print(tree)
                counter = 0
            link = "http://cup.ir" + tree.xpath('//li[@class ="clearfix"]/a/@href')[counter]
            get_news_from_link(link,(((page-1)*49) + counter))
            print((((page - 1) * 49) + counter), " :: ", link)
            sleep(0.75)
            counter += 1
    
    def get_news_from_link(link,x):
        print("\n-------- get news from link ----------\n")
        page_link = requests.get(link)
        tree = html.fromstring(page_link.text)
        title = tree.xpath('//meta[@property="og:title"]/@content')[0]
        text = tree.xpath('//*/p/text()')[2:-2]
        print("Title: ",title)
        print("Text: ",text)
        print2file(title,text,x)
    
    
    def print2file(title ,text ,counter):
        print("\n-------- print 2 file ----------\n")
    
        title = title + "\n"
        name_file = "news" + str(counter).zfill(4) + ".txt"
        file = codecs.open(name_file, "w", "utf-8")
        file.write(''.join(title))
        file.write(''.join(text))
        file.close()
    
    def main():
        print("----- START -----")
        print("----- main -----")
        print("site: ",site)
        print("number: ", number)
    
        crawl(site)
        print("----- END -----")
    
    if __name__ == "__main__":
        main()
    

    【讨论】:

      猜你喜欢
      • 2014-05-30
      • 1970-01-01
      • 2023-03-29
      • 2022-01-25
      • 2022-08-02
      • 2018-05-03
      • 2020-09-13
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多