Ошибка UnicodeEncodeError: кодек «charmap» не может кодировать символ «ufffd » в позиции 36: символ сопоставляется с

#database #selenium #web-scraping #unicode #character

Вопрос:

Проект: Веб-очистка заголовков и URL-адресов, которые вы получаете от https://theuselessweb.com/

Проблема 1: название http://www.republiquedesmangues.fr/ использует символ, который программа (или что-то еще) не может использовать, поэтому программа завершает работу.

Проблема 2: Есть ли простой способ избавиться от кратных? Когда URL/заголовок сохраняется дважды или более, я хочу удалить все, кроме одного. (Возможно, с помощью базы данных. Если да, пожалуйста, предложите один из них.)

Код:

 from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from time import sleep

PATH = r"C:UsersLeanderDocumentsscrapingchromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("https://theuselessweb.com/")
driver.switch_to.window(driver.window_handles[-1])
button = driver.find_element_by_id("button")

file = open("C:\Users\XXX\Documents\scraping\programs\file.txt", "w")
for i in range(100):
    button.click()
    driver.switch_to.window(driver.window_handles[2]) #HERE
    if driver.title == "":
        file.write("No titlen")
    else:
        file.write("Title: " driver.title "n")
    file.write("URL: " driver.current_url "nn")
    driver.close()
    driver.switch_to.window(driver.window_handles[1]) #HERE
file.close()

 

Этот код может не работать для вас, потому что мой Chrome открывает настройки каждый раз, когда я открываю его с помощью selenium. Если вы этого не сделаете, просто измените числа в » []», отмеченные знаком «#ЗДЕСЬ» в коде, на число на единицу меньше (поэтому 1 и 0 вместо 2 и 1).