Grab: различия между версиями

Содержимое удалено Содержимое добавлено
HOC (обсуждение | вклад)
HOC (обсуждение | вклад)
Строка 65:
Получите title страницы
 
Часто требуется получения текста из одного элемента. Например, статус пользователя вконтакте или мониторинг цены товара (как промышленный шпион). Поставьте расширение для браузера firebug. Правой клавишей становитесь на тексте и выбираете Inspect element with Firebug.<br>
'''Пару слов об xPath:'''
Многим новичкам непонятен, как работает xPath. Самый легкий вариант импортировать путь через Firebug, но в этом случае генерируется много мусора. xPath очень легкий если понятен его принцип.<br>
xPath расшифровывается как XML Path Language.
<source lang="python">
print g.xpath_text('//*')
</source>
Звездочка означает импортировать весь текст.
<source lang="python">
print g.xpath_text('//div')
</source>
После двух слешей, вы можете указать из какого конкретно элемента импортировать. Если элемент пуст, то появится ошибка. Это не должно вас пугать, это не значит, что вы неправильно прописали синтаксис, это значит, что просто элемент пуст. Также еще важный момент xPath действует интеллектуально, он ищет элемент по всей странице. Найдет даже если он в конце вебстраницы.
Вы можете конкретизировать элемент. Эта та самая часть, которая путает многих начинающих.
<source lang="python">
print g.xpath_text('//h1')
print g.xpath_text('//h3')
print g.xpath_text('//ul[@class="tags"]')
print g.xpath_text('//div[@id="post_140164"]')
print g.xpath_text('//a[@class="post_title"]')
</source>
После двух слешей вы указываете сам элемент, ухо указывает на атрибут элемента. Например, в html коде написано так:
<source lang="python">
<div id="post_115825">
</source>
А в Грабе следовательно надо написать так:
<source lang="python">
print g.xpath_text('//div[@id="post_11582"]')
</source>
Если мы имеем дело с линком, значит вместо div пишем a. Если он имеет какой-то класс, то конкретизируем.
<source lang="python">
print g.xpath_text('//a[@class="post_title"]')
</source>
Значительную помощь нам оказывает Firebug или встроенный модуль анализа элементов в браузерах.
 
== Получаем линк ==