17

It's my 2nd day with Selenium 2 library and the pain with Unicode never seem to subside.

I'm just doing the most basic operation, want to print the page source:

from selenium import webdriver


driver = webdriver.Firefox()
driver.get("http://google.com")

print driver.page_source

Sure enough, I get an error:

UnicodeEncodeError: 'ascii' codec can't encode character u'\u0119' in position 62045:  
ordinal not in range(128)

How can I please encode this to utf-8 ?

nutship
  • 4,624
  • 13
  • 47
  • 64

2 Answers2

30

You have options, based on this similar question.

You can either convert the source to all ascii losing the Unicode characters in the process.

(driver.page_source).encode('ascii', 'ignore')

Or, and I think you'll prefer this, you can encode it to utf-8 like this: (driver.page_source).encode('utf-8').

Community
  • 1
  • 1
jaynp
  • 3,275
  • 4
  • 30
  • 43
1

Instead of print(string), use print(repr(string)) to return a printable representation of the object.

ron_g
  • 1,474
  • 2
  • 21
  • 39