Доброго дня!
Недавно взялся за webdriver и решил парсить хабр.
from selenium import webdriver
driver = webdriver.Firefox()
driver.implicitly_wait(30)
driver.get('http://habrahabr.ru/')
list_of_titles = driver.find_elements_by_xpath("//h1[@class='title']/a[@class='post_title']")
for title in list_of_titles:
print(title.text)
driver.close()
в результате ошибка:
print(title.text)
File "C:\Python34\lib\encodings\cp866.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2014' in position 15: character maps to <undefined>
Я так понимаю, что нужно просто знать какая кодировка у хабра? Если так, то где это узнать?
Кроме того есть другая проблема. Скрипты с вебдрайвером создают темповые файлы, которые остаются в системе. Хотелось бы их за собой подчищать.
Удалять файлы
Если очень хочется то можешь заюзать shutil.rmtree чтобы удалить все дерево, или os.remove, чтобы удалять файлы по одиночке. Но кажется, что темповые файлы не нужно удалять, если они создаются в темповой директории, которую очищает операционная система после перезагрузки.
Кстати говоря, перед выходом из тестов лучше помимо driver.close() сделать и driver.quit() потом. Это нужно чтобы остановить запущенный сервис (в случае firefox это сам браузер, в отличие от chrome’подобных браузеров, где между браузером и pyselenium’ом стоит chromedriver. Firefox поддерживает протокол selenium’a за счет расширения, которое устанавливается внутрь Firefox и слушает команды): selenium/webdriver.py at trunk · SeleniumHQ/selenium · GitHub
Отличие close от quit в том, что close - это закрытие вкладки (в данном случае у тебя одна, поэтому и закрывается браузер) а quit - это именно завершение процесса браузера
Во-первых # -*- coding: utf-8 -*-. Во-вторых в python3 это не нужно, потому что в utf-8 уже по умолчанию. К этой проблеме utf-8 не имеет отношения.
Проблема в том, что виндовая консоль имеет кодировку cp866 и не умеет отображать символ “—”, поэтому ошибка в C:\Python34\lib\encodings\cp866.py.
ага, не поможет, потому что это проблема не питона, а виндовой консоли. Лучше результат сохранять в файл как минимум, а не в консоль, или заюзать специальные генераторы отчетов типа allure
Мысль была в том, чтобы сохранять в файл только первую статью. При следующем заходе считывать данные файла и останавливать поиск при нахождении статьи из файла. + отфильтровывать неинтересные статьи.