Уведомления

Группа в Telegram: @pythonsu

#1 Март 4, 2015 14:40:45

Bone_machine
Зарегистрирован: 2015-03-04
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

получить данные через xpath

Не могу понять в чем дело
Пытаюсь распарсить страницу http://www.spr.kz/all/himicheskie-zavodi/,получить названия и адреса предприятий.
Названия получил, а с адресами засада.
Порядок моих действий:
( тела документа в дерево элементов уже преобразовано, использую библиотеку lxml)
1. получаю путь Xpath нужного элемента страницы c помощью FirePath
2. Делаю запрос, используя полученный путь:

 adress = parsed_body.xpath('html/body/center/div[1]/table[3]/tbody/tr[3]/td[1]/table/tbody/tr/td[2]/a/text()'
)
…а получаю пустой список.
что я делаю не так? как правильно?

Офлайн

#2 Март 4, 2015 14:44:16

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

получить данные через xpath

весь код покажите



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

Офлайн

#3 Март 4, 2015 16:34:26

malya
От:
Зарегистрирован: 2012-01-11
Сообщения: 49
Репутация: +  1  -
Профиль   Отправить e-mail  

получить данные через xpath

adress = parsed_body.xpath('html/body/center/div[1]/table[3]/tbody/tr[3]/td[1]/table/tbody/tr/td[2]/a').text
Если parsed_body.xpath возвращает объект ноды.



Отредактировано malya (Март 4, 2015 16:35:18)

Офлайн

#4 Март 5, 2015 03:02:26

Bone_machine
Зарегистрирован: 2015-03-04
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

получить данные через xpath

import requests
from lxml import html
#1. Создаем объект Response данной страницы
r = requests.get('http://www.spr.kz/all/himicheskie-zavodi/')
#Превращаем данные тела объекта в дерево 
pb = html.fromstring(r.text)
#получаем список названий:
names = []
for i in range(46):
    x = pb.xpath('.//*[@id="head'+str(i)+'"]/text()')
    names += x
#теперь хочу получить адреса
#(получил путь xpath через firepath)
#пытаюсь получить данные хотя бы с одного элемента
adress = pb.xpath('html/body/center/div[1]/table[3]/tbody/tr[3]/td/table/tbody/tr/td[2]/a/text()')

получаю пустой список, а хотелось бы все-таки адрес.


Отредактировано Bone_machine (Март 5, 2015 03:24:32)

Офлайн

#5 Март 5, 2015 04:55:17

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

получить данные через xpath

import requests
from lxml import html
r = requests.get('http://www.spr.kz/all/himicheskie-zavodi/')
pb = html.fromstring(r.text)
names = []
for i in pb.xpath('.//*[starts-with(@id, "head")]'):
    names.append(i.text)
    adress = i.xpath('../../table/tr/td/a[@class="adres"]/text()')[0]
    print(adress)



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

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version