Форум сайта python.su
0
Есть сайт:
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()")
Офлайн
53
Bone_machine
попробуй . убрать перед // и замени a/text() на
a[text()]
Отредактировано sander (Март 24, 2015 16:55:05)
Офлайн
0
sanderПопробовал. Тот же самый результат - .
Bone_machineпопробуй . убрать перед // и замени a/text() на
Офлайн
53
Bone_machine
там javascript, requests не умеет его выполнять
возьми selenium и phantomJS
Отредактировано sander (Март 24, 2015 20:40:33)
Офлайн
2
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
Отредактировано PyNovice (Март 24, 2015 20:50:56)
Офлайн
0
спасибо!
а если я захочу скачать все дерево категорий, то какой модуль и как использовать? Как “раскрыть” все дерево?
Предполагаю, что надо grab'oм последовательно проходить каждый узел, сохранять текст в теге, спрашивать, продолжается ли ветвь дальше, если да, то идти дальше по ней, если нет, то переходить к следующей?
Или есть возможность типа команды names = g.doc.select('//div/ul/li/descendant-or-self::*') ?
прошу прощения, если вопрос “тупой”, только осваиваюсь… Может посоветуйте, что почитать.
Офлайн