Найти - Пользователи
Полная версия: Проблема с xpath запросом
Начало » Python для новичков » Проблема с xpath запросом
1
Bone_machine
Есть сайт:
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()")

Но получаю пустой список.
В чем моя ошибка?
sander
Bone_machine
попробуй . убрать перед // и замени a/text() на
a[text()]
Bone_machine

sander
Bone_machineпопробуй . убрать перед // и замени a/text() на
Попробовал. Тот же самый результат - .
sander
Bone_machine
там javascript, requests не умеет его выполнять
возьми selenium и phantomJS
PyNovice
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’
Bone_machine
спасибо!
а если я захочу скачать все дерево категорий, то какой модуль и как использовать? Как “раскрыть” все дерево?
Предполагаю, что надо grab'oм последовательно проходить каждый узел, сохранять текст в теге, спрашивать, продолжается ли ветвь дальше, если да, то идти дальше по ней, если нет, то переходить к следующей?
Или есть возможность типа команды names = g.doc.select('//div/ul/li/descendant-or-self::*') ?

прошу прощения, если вопрос “тупой”, только осваиваюсь… Может посоветуйте, что почитать.
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