Bone_machine
Март 24, 2015 15:46:17
Есть сайт:
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
Март 24, 2015 16:50:56
Bone_machineпопробуй . убрать перед // и замени a/text() на
Bone_machine
Март 24, 2015 18:11:02
sander
Bone_machineпопробуй . убрать перед // и замени a/text() на
Попробовал. Тот же самый результат - .
sander
Март 24, 2015 20:40:23
Bone_machine
там javascript, requests не умеет его выполнять
возьми selenium и phantomJS
PyNovice
Март 24, 2015 20:45:23
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
Март 26, 2015 15:26:40
спасибо!
а если я захочу скачать все дерево категорий, то какой модуль и как использовать? Как “раскрыть” все дерево?
Предполагаю, что надо grab'oм последовательно проходить каждый узел, сохранять текст в теге, спрашивать, продолжается ли ветвь дальше, если да, то идти дальше по ней, если нет, то переходить к следующей?
Или есть возможность типа команды names = g.doc.select('//div/ul/li/descendant-or-self::*') ?
прошу прощения, если вопрос “тупой”, только осваиваюсь… Может посоветуйте, что почитать.