Хорошо, первоначальный ответ и мои комментарии, похоже, требовали больше информации, чем было удобно в разделе комментариев, поэтому я решил создать новый ответ.
Прежде всего, то, что вы пытаетесь сделать IS задача программирования, для которой БУДЕТ требуется определенная способность программирования, в зависимости от ваших конкретных потребностей.
Во-вторых, были предоставлены некоторые ответы, в которых предлагается использовать циклы поиска символов и регулярные выражения. Оба из них ужасно подвержены ошибкам способы сделать вещи, как обсуждалось, например, здесь .
Обычный способ парсинга HTML / XML в настоящее время - использование внешней библиотеки, предназначенной для этого. На самом деле эти библиотеки на данный момент являются стандартом, и во многих языках программирования они уже встроены.
Для ваших конкретных нужд я тоже ржавый на C и XPath, но он должен работать примерно так:
- запустить анализатор XML / HTML.
- загрузите в него свой HTML-документ в виде строки символов
- сказать парсеру найти все экземпляры тега (используя XPath)
- вернет вам «набор узлов»
- обрабатывает набор узлов в цикле, делая с каждым тегом все, что вам нужно
Я нашел несколько других примеров, может быть, этот лучше: http://xmlsoft.org/example.html
Как вы можете видеть, есть документ XML (который не имеет значения, поскольку HTML - это просто подмножество XML, ваш документ HTML тоже должен работать).
В Python или аналогичном языке это было бы чрезвычайно легко, в некоторых псевдокодах это будет выглядеть так:
p=new HTMLParser
p->load(my html document)
resultset=p->XPath_Search("//a") # this will find all A elements in the HTML document
for each result of resultset:
write(result.href)
end for
это обычно выписывает HREF часть всех элементов A в документе.
Достойный учебник о том, для чего вы можете использовать XPath, например, здесь .
Боюсь, что в C это было бы несколько более запутанным, но идея та же самая, и это задача программирования.
Если это какая-то быстрая и грязная работа, вы можете использовать предложенный поиск strstr () или regexp без внешних библиотек. Однако имейте в виду, что в зависимости от конкретной задачи вы, скорее всего, пропустите ряд исходящих ссылок или неправильно прочитаете их содержание.