Как правильно хранить (в csv) и получать html, извлеченный с использованием селена, для отображения в srcdoc iframe - PullRequest
0 голосов
/ 21 июня 2019

У меня есть 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()

Я был бы очень признателен за понимание этой проблемы и способов ее решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...