У меня есть CSV-файл с одним URL на строку. Я создаю фрейм данных, используя этот CSV, а затем зацикливаю его.
Для каждого URL я использую селен, чтобы получить исходный код страницы (я использую селен, потому что я тоже хочу код javascript), затем я использую красивый суп для отключения ссылок, затем сохраняю суп в фрейме данных, который затем записывается в новый csv.
Затем приложение будет использовать эти источники для комментариев пользователей (намного быстрее, чем использование селена в реальном приложении), отправляя источник в srcdoc iframe.
Проблема в том, что некоторые источники хранятся со странными (например, буквами А с символами вверху) символами, и соответствующие страницы выглядят довольно деформированными при отображении в iframe (заполненном квадратами или буквами повсюду).
Я полагаю, что это проблема кодирования между html, строкой и супом. Но я не уверен, что именно является проблемой и как ее решить.
samples_path = cwd+"/sam.csv"
output_path = cwd+"/sam_html.csv"
smpls = pd.read_csv(samples_path, sep='\t', encoding="latin1")
s_d = smpls.to_dict('index')
write_header=True
for key in s_d:
print("WILL TRY NEW PAGE")
browser = webdriver.Chrome(chrome_options=chrome_options, executable_path=chrome_driver)
browser.get(s_d[key]["page"])
body = browser.page_source
#Disable links
soup = bs(body, 'lxml')
for a in soup.findAll('a'):
del a['href']
a.name='span'
if len(soup.findAll('span')) > 0:
soup.span.unwrap()
s_d[key]["page_html"] = soup.prettify()
to_append = pd.DataFrame([s_d[key]])
to_append.to_csv(output_path, sep="\t", mode='a', index=False, header=write_header)
write_header=False
browser.quit()
Я был бы очень признателен за понимание этой проблемы и способов ее решения.