Распарсил интернет-страницу, перекодировал её в текст. Переменную с текстом не получается записать в файл. Срабатывает исключение. Помогите пожалуйста разобраться:
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()
Проблема была в кодировке. Указание encoding='utf-8' with open(filename, "w", encoding='utf-8') as fh
решает вопрос. Иван, спасибо за интерес к моему вопросу.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пытаюсь создать службу-плеер "играть случайные аудио-файлы пользователя друг за другом"В целом весь код работает идеально (все проигрывается...