Форум сайта python.su
857
>>> import lxml.html >>> >>> def func(url): ... html = lxml.html.parse(url) ... ... ndesc = html.xpath('//div[@class = "description_composition"]')[0] ... nprop1, nprop2 = ndesc.xpath('.//*[@class = "description_content"]') ... ... tprop1 = nprop1.xpath('.//text()') ... tprop2 = nprop2.xpath('.//text()') ... ... text1 = ''.join(tprop1).strip() ... text2 = ''.join(tprop2).strip() ... ... return text1, text2 ... >>> desc, comp = func('http://medini-original.com' ... '/ru/product/plate_samanta_a3.html') >>> >>> desc 'Состав: полированный ситец+ костюмный креп трикотаж.\xa0Ткани используемые в данной модели, экологически чистые, и натуральные! (100% хлопок).\xa0Декорировано клеевыми камнями. Потайная змейка. Длина изделия 140 см рост модели на фото 170 см. Размеры:42-44 (M); 46-48 (L); 50-52 (XL).' >>> comp 'полированный ситец+ костюмный креп трикотаж.' >>>
Офлайн
1
А в этом коде
<div> <div class="description_content active" data-prop="1"> <p><span>Состав: полированный ситец+ костюмный креп трикотаж. </span><span>Ткани используемые в данной модели, экологически чистые, и натуральные! (100% хлопок). </span><span>Декорировано клеевыми камнями. Потайная змейка. Длина изделия 140 см рост модели на фото 170 см. Размеры:42-44 (M); 46-48 (L); 50-52 (XL).</span></p> </div> <div class="description_content" data-prop="2"> полированный ситец+ костюмный креп трикотаж. </div> </div>
ndesc = html.xpath('//div[@class = "description_composition"]')[0] ... nprop1, nprop2 = ndesc.xpath('.//*[@class = "description_content"]')
Офлайн
857
nprop1, nprop2 = ndesc.xpath('.//*[@class = "description_content" or @class = "description_content active"]')
nprop1, nprop2 = ndesc.xpath('.//*[@class = "description_content" or ' '@class = "description_content active"]')
Отредактировано py.user.next (Март 28, 2014 21:56:59)
Офлайн
1
Мне просто не понятно, как вы привязываетесь к строчкам кода html, что бы вытащить текст. Не могли бы рассказать?
Офлайн
1
Вот допустим нужно найти Платье “Саманта” А3 на той же странице http://medini-original.com/ru/product/plate_samanta_a3.html.
где это в коде, вернее к чему привязаться что бы вытащить данные?
Офлайн
857
ingfa_1981
Вот допустим нужно найти Платье “Саманта” А3 на той же странице
>>> import lxml.html >>> >>> url = 'http://medini-original.com/ru/product/plate_samanta_a3.html' >>> >>> html = lxml.html.parse(url) >>> name = html.xpath('//div[@class = "name_product"]/text()')[0] >>> name 'Платье "Саманта" А3' >>>
<div class="name_product">
Отредактировано py.user.next (Март 28, 2014 22:37:01)
Офлайн
1
Интересно получается, неделю сидел и не мог нажать в Chrome кнопку copy xpath, потому что ни знал что ее надо нажимать.
получился вот такой код. А как вытащить ссылку на следующую страничку?
# -*- coding: utf-8 -*- from grab import Grab g = Grab() g.go("http://medini-original.com/ru/product/1432.html") print (g.doc.select("//div[1]/div/div/section/div[2]/div[2]/div[1]").text()) print (g.doc.select("//div[1]/div/div/section/div[2]/div[2]/div[2]/div[2]/div[2]/div[2]/div[1]/p").text()) print (g.doc.select("//div[1]/div/div/section/div[2]/div[2]/div[2]/div[1]/div[1]").text()) print (g.doc.select("//div[1]/div/div/section/div[3]/div[2]/a").text())
Отредактировано ingfa_1981 (Март 30, 2014 17:30:19)
Офлайн
857
ingfa_1981такое лучше не писать:"//div[1]/div/div/section/div[2]/div[2]/div[2]/div[2]/div[2]/div[2]/div[1]/p"
Отредактировано py.user.next (Март 30, 2014 21:03:47)
Офлайн
20
# -*- coding: utf-8 -*- from grab import Grab g = Grab() g.go("http://medini-original.com/ru/product/1559.html") while 1: print g.doc.select("//div[@class='name_product']").text() for mel in g.doc.select("//div[@class='description_content']/p"): print mel.text() print (g.doc.select("//div[@class='sum_zakaz']").text()) try: g.go("http://medini-original.com"+str(g.doc.select("//div[@class='blog_next']/a").attr("href"))) except: break
Отредактировано noob_saibot (Март 31, 2014 18:14:08)
Офлайн