Найти - Пользователи
Полная версия: получить данные через xpath
Начало » Data Mining » получить данные через xpath
1
Bone_machine
Не могу понять в чем дело
Пытаюсь распарсить страницу 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()'
)
…а получаю пустой список.
что я делаю не так? как правильно?
terabayt
весь код покажите
malya
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 возвращает объект ноды.
Bone_machine
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()')

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


terabayt
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)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB