Форум сайта python.su
0
Нужно пропарсить страницу.
На картинке <div class=“view-content”> содержит подэлементы (типа div), которых может быть произвольное количество.
Доступ к этому “корневому” div'у получаю так:
objRootDiv = wd.find_element_by_xpath("/html/body/div[2]/div/div[2]/div/div/div/div[1]/div/div/div")
Отредактировано hdj (Дек. 4, 2014 18:27:17)
Прикреплённый файлы:
динам элем.png (15,6 KБ)
Офлайн
26
Сперва по xpath заходим на
div[@class="view-content"]
#coding: utf-8 from selenium import webdriver driver = webdriver.PhantomJS(executable_path='C:\\bin\\phantomjs\\phantomjs.exe') driver.get('https://www.python.org/') menu = driver.find_element_by_xpath('//ul[@class="menu"][@role="tree"]') for k in menu.find_elements_by_xpath('./li'): print k.text
Отредактировано ajib6ept (Дек. 4, 2014 20:11:21)
Офлайн
0
Благодарю!
Еще вопрос.
Если обратиться к свойству Text выделенного элемента span, допустим:
wd.find_element_by_xpath('.//span[@class="expired time"]').text
print (wd.find_element_by_xpath('//div[@class="view-content"]').find_element_by_xpath('.//span[@class="expired time"]').text)
12:20
170 р.
Отредактировано hdj (Дек. 6, 2014 09:52:25)
Прикреплённый файлы:
к2_спан.png (11,2 KБ)
Офлайн
0
hdjНашел вариант: считывать до символа перевода строки. Для данного случая это подходит, но не факт, что будет применимо для других.
Как получить только “12:20”? Без текстовых значений других вложенных элементов.
Офлайн
0
А как обратиться к подэлементу <div class=“views-row views-row-3 views-row-odd row”> кроме как?
div[@class="view-content"]/div[3]
div[@class="views-row"]
<div class="view-content"> <div class="views-row views-row-1 views-row-odd views-row-first row"> <div class="views-row views-row-2 views-row-even row"> <div class="views-row views-row-3 views-row-odd row"> <div class="views-row views-row-4 views-row-even row">
Отредактировано hdj (Дек. 9, 2014 09:01:12)
Офлайн
26
Так надо полное имя класса писать
from selenium import webdriver driver = webdriver.Firefox() driver.get('http://krasnoyarsk.kinomechta.com/') print driver.find_element_by_xpath('//div[@class="view-content"]/div[3]') == driver.find_element_by_xpath('//div[@class="view-content"]/div[@class="views-row views-row-3 views-row-odd row"]')
Офлайн
0
Допустим надо собрать все подэлементы
<div class="view-content"> <div class="views-row views-row-1 views-row-odd views-row-first row"> <div class="views-row views-row-2 views-row-even row"> <div class="views-row views-row-3 views-row-odd row"> <div class="views-row views-row-4 views-row-even row">
divMain = driver.find_element_by_xpath('.//div[@class="view-content"]') print ('divMain:') print (divMain) divSubs = divMain.find_elements_by_xpath('./div') print ('divSubs:') print (divSubs)
Отредактировано hdj (Дек. 10, 2014 09:43:32)
Офлайн
26
а если так попробовать
driver.find_elements_by_xpath('//div[@class="view-content"]/div[contains(@class, "views-row")]')
Офлайн