Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 9, 2014 00:21:49

gelius
Зарегистрирован: 2013-03-18
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

type 'unicode'?

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://python.org/")
#Ищем все по тегу img
list_links = driver.find_elements_by_tag_name('img')
for i in list_links:
#Получаем аттрибут тега img
	im = i.get_attribute('src')
        random.shuffle(im)
#выключаем webdriver
driver.quit()
“random.shuffle(im)” выдает ‘typeerror’. неподдерживается работа с юникод объектами.
“im” - имеет type ‘unicode’.
Нужно выбрать случайный линк на картинку.

Офлайн

#2 Дек. 9, 2014 01:54:11

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

type 'unicode'?

from selenium import webdriver
import random
driver = webdriver.Firefox()
driver.get("http://python.org/")
list_links = driver.find_elements_by_tag_name('img')
print(random.choice(list_links).get_attribute('src'))
driver.quit()



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Дек. 9, 2014 13:50:56

gelius
Зарегистрирован: 2013-03-18
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

type 'unicode'?

ОК, так заработало. Все равно не понимаю с этим ‘unicode’. Теперь не могу кликнуть по ссылке. Говорит

unicode object has no attribute click

Офлайн

#4 Дек. 9, 2014 14:05:17

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

type 'unicode'?

код



————————————————
-*- Simple is better than complex -*-

Офлайн

#5 Дек. 9, 2014 17:36:23

gelius
Зарегистрирован: 2013-03-18
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

type 'unicode'?

На данный момент так:

from selenium import webdriver
from selenium.webdriver import Firefox, FirefoxProfile, ActionChains
import random
driver = webdriver.Firefox()
driver.get("http://python.org/")
list_links = driver.find_elements_by_tag_name('a')
url = random.choice(list_links).get_attribute('href')
actions = ActionChains(driver)
actions.click(url)
driver.quit()
Все еще не кликает. Ошибок не выдает.

Офлайн

#6 Дек. 9, 2014 19:56:25

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

type 'unicode'?

from selenium import webdriver
from selenium.webdriver import Firefox, FirefoxProfile, ActionChains
import random
driver = webdriver.Firefox()
driver.get("http://python.org/")
list_links = driver.find_elements_by_tag_name('a')
url = random.choice(list_links)
actions = ActionChains(driver)
actions.click(url)
actions.perform()
#driver.quit()



————————————————
-*- Simple is better than complex -*-

Офлайн

#7 Дек. 10, 2014 05:26:09

gelius
Зарегистрирован: 2013-03-18
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

type 'unicode'?

А если так:

from selenium import webdriver
from selenium.webdriver import Firefox, FirefoxProfile, ActionChains
import re
import random
driver = webdriver.Firefox()
driver.get("http://python.org/")
list_links = driver.find_element_by_xpath(u'//img/ancestor::a[not(re:match(@href, "(slovo1|slovo2)")) ]/@href', namespaces={"re": "http://exslt.org/regular-expressions"})
url = random.choice(list_links)
actions = ActionChains(driver)
actions.click(url)
actions.perform()
#driver.quit()
Говорит:
got an unexpected keyword argument 'namespace'
Где косяк?

Отредактировано gelius (Дек. 10, 2014 11:38:15)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version