2010-10-24 2 views
0

Я пытаюсь извлечь данные с веб-сайта с помощью цели-c. Это все очень ново для меня, поэтому я провел некоторое исследование. Теперь я знаю, что мне нужно использовать xpath, и у меня есть еще одна оболочка для hpple для iPhone. У меня это есть и работает в моем проекте.Регулярные выражения (разбор HTML на iPhone)

Я смущен о том, как я извлекаю информацию с сайта. По-видимому, я должен использовать регулярные выражения в этой строке кода:

NSArray * a = [doc search:@"//a[@class='sponsor']"]; 

Это всего лишь пример. Это что-то в поиске: @ "...." регулярное выражение? Если это так, я думаю, что я могу разработать сотни шаблонов, которые мне понадобятся для моей программы для синтаксического анализа сайта (мне нужно много данных), но есть ли лучший способ? Я очень потерялся в этом. Любая помощь приветствуется.

ответ

1

Параметр - это XPath, а не регулярное выражение. Ниже представлена ​​поломка:

  • Все xpaths интерпретируются относительно context node. В этом случае это корневой узел.
  • // это аббревиатура означает «все потомки»
  • a означает «все дочерние nodes с типом узла„а“» (в HTML, это anchors)
  • [...] содержит predicate, рафинирование, какие именно a к матч
    • @ это аббревиатура для атрибута узлов
    • @class означает атрибут с именем «класс»
    • @class='sponsor' означает атрибут класса, равный «спонсору». Обратите внимание, что это не будет соответствовать узлам с классом , содержащим «спонсором», например <a class="big sponsor" ...>; класс должен быть равным.

Все вместе, мы имеем «„а“узлы нисходящие от корня, которые имеют класс, равный« спонсора».

+0

Очень информативно. По какой-либо причине, есть ли программа, которую я могу использовать, чтобы легко найти правильный XPath? Или XPath достаточно легко работать? – nicholjs

+0

Что значит «правильный XPath»? Вы хотите найти XPath, который будет выбирать данные узлы? Я не видел приложения, которое делает это. Тем не менее, существует множество [тестеров XPath] (http://www.google.com/search?q=xpath+test), которые позволяют проверить, выбирает ли выбранный XPath узлы, которые вы хотите для данного документа, или нет. Если вы используете Mac, попробуйте [AquaPath] (http://ditchnet.org/aquapath/) для начала. Что касается работы с XPath, найдите учебники. Некоторые из них легко работать; они немного похожи на развитые пути к файлам (я думаю, что это происходит на уровне 30). – outis

+0

+1 Хороший ответ. Минор: 'a' означает * дочерние элементы с именем' a' *. – 2010-10-24 20:27:48

0

Это выражение XPath, а не регулярное выражение. W3C имеет ссылку XPath здесь: http://www.w3.org/TR/xpath/. В основном вы ищете <a> элементы с классом «спонсор».

Обратите внимание, что это хорошая вещь! Регулярные выражения плохо подходят для разбора HTML.

+0

Большое спасибо Мэтт. Я буду работать через учебник. – nicholjs

Смежные вопросы