Не получается записать переменную в файл

151
23 февраля 2022, 22:30

Распарсил интернет-страницу, перекодировал её в текст. Переменную с текстом не получается записать в файл. Срабатывает исключение. Помогите пожалуйста разобраться:

from urllib.request import urlopen
from urllib.error import HTTPError
import os
import re
import pandas as pd
import requests

class HtmlParser:
    def __init__(self, sites_file='sites_of_all.xlsx', path_to='data-result-my'):
        self.path = self.create_folder_data(path_to)
        self.err_file = os.path.join(self.path, 'errors-site-my.txt')
        self.df = pd.read_excel(sites_file)
    def create_folder_data(self, path_to):
        path = os.path.join(os.getcwd(), path_to)
        try:
            os.mkdir(path)
            return path
        except FileExistsError:
            return path
    def run(self):
        for site in self.df['site_final'].values:
            site_url = 'http://'+ site.strip() if 'http://' not in site else site
            site_url = site_url.lower()
            print('Обработка сайта - ', site_url)
            try:
                r = requests.post(url = site_url, verify = False)
                site_url = r.url
                print('Обработка сайта - ', site_url)
                html = urlopen(site_url).read()
                # print(html)
                filename = os.path.join(self.path, str(site) + '.txt')
                # print(filename)
                with open(filename, "w") as fh:
                    soup = BeautifulSoup(html)
                    for script in soup(["script", "style"]):
                        script.extract()
                    text = soup.get_text()
                    lines = (line.strip() for line in text.splitlines())
                    chunks = (phrase.strip() for line in lines for phrase in line.split("  "))
                    text = '\n'.join(chunk for chunk in chunks if chunk)
                    fh.write(text)
                print('---finished')
            except:
                with open(self.err_file, "a") as f:
                    f.write(site + '\n')
                print('***error')

if __name__ == '__main__':
    h = HtmlParser()
    h.run()
Answer 1

Проблема была в кодировке. Указание encoding='utf-8' with open(filename, "w", encoding='utf-8') as fh решает вопрос. Иван, спасибо за интерес к моему вопросу.

READ ALSO
Service - убийство окна останавливает service

Service - убийство окна останавливает service

Пытаюсь создать службу-плеер "играть случайные аудио-файлы пользователя друг за другом"В целом весь код работает идеально (все проигрывается...

101
Страничные запросы в JPA

Страничные запросы в JPA

вывожу данные из базы подобным образом:

200