Уведомления

Группа в Telegram: @pythonsu

#1 Март 24, 2015 15:46:17

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

Проблема с xpath запросом

Есть сайт:
http://wikimapia.org/#lang=ru&lat=59.854644&lon=38.336105&z=12&m=b&show=/user/tools/categories_catalog/
нужно скачать названия категорий и их id.Застопорился на названиях.
вот пока чтоесть.

import requests
from lxml import html
r = requests.get('http://wikimapia.org/#lang=ru&lat=59.854644&lon=38.336105&z=12&m=b&show=/user/tools/categories_catalog/')
pb = html.fromstring(r.text)

Пробую получить доступ к названиям следующим образом:
categories = pb.xpath(".//*[starts-with(@id, 'dhtmlgoodies_treeNode')]/a/text()")

Но получаю пустой список.
В чем моя ошибка?

Офлайн

#2 Март 24, 2015 16:50:56

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

Проблема с xpath запросом

Bone_machine
попробуй . убрать перед // и замени a/text() на

a[text()]

Отредактировано sander (Март 24, 2015 16:55:05)

Офлайн

#3 Март 24, 2015 18:11:02

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

Проблема с xpath запросом


sander
Bone_machineпопробуй . убрать перед // и замени a/text() на
Попробовал. Тот же самый результат - .

Офлайн

#4 Март 24, 2015 20:40:23

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

Проблема с xpath запросом

Bone_machine
там javascript, requests не умеет его выполнять
возьми selenium и phantomJS

Отредактировано sander (Март 24, 2015 20:40:33)

Офлайн

#5 Март 24, 2015 20:45:23

PyNovice
Зарегистрирован: 2014-09-18
Сообщения: 17
Репутация: +  2  -
Профиль   Отправить e-mail  

Проблема с xpath запросом

from grab import Grab
g = Grab()
g.setup(cookies = {'lng' : '1', })
g.go('http://wikimapia.org/user/tools/categories_catalog/')
name = g.doc.select('//div[@id="tree-div"]/ul/li/a')
mark = g.doc.select('//div[@id="tree-div"]/ul/li/sup')
for num in range(200):
    try:
        print(name[num].text() + '-->' + mark[num].text())
    except IndexError:
        break
Держите вариант с Grab. По тому адресу что вы указали контент генерируется скриптами, там вы естественно ничего не найдете. Смотрите здесь - http://wikimapia.org/user/tools/categories_catalog/
Ну и кука ‘lng’ : ‘1’ нужна чтоб было на русском

Если я правильно понял что такое ‘ID’

Отредактировано PyNovice (Март 24, 2015 20:50:56)

Офлайн

#6 Март 26, 2015 15:26:40

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

Проблема с xpath запросом

спасибо!
а если я захочу скачать все дерево категорий, то какой модуль и как использовать? Как “раскрыть” все дерево?
Предполагаю, что надо grab'oм последовательно проходить каждый узел, сохранять текст в теге, спрашивать, продолжается ли ветвь дальше, если да, то идти дальше по ней, если нет, то переходить к следующей?
Или есть возможность типа команды names = g.doc.select('//div/ul/li/descendant-or-self::*') ?

прошу прощения, если вопрос “тупой”, только осваиваюсь… Может посоветуйте, что почитать.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version