Регулярные выражения (разбор HTML на iPhone) - PullRequest
0 голосов
/ 24 октября 2010

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

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

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

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

Ответы [ 2 ]

1 голос
/ 24 октября 2010

Параметр является XPath, а не регулярным выражением.Вот разбивка:

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

Все вместе, у нас есть "'" нисходящие узлы от корня, которые имеют класс, равный "спонсору" ".

0 голосов
/ 24 октября 2010

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

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

...