HTML parser wanted!
От: Poseidon СССР  
Дата: 02.03.18 18:50
Оценка:
Друзья! Разыскиваю сабж для языка С.
На входе html страница с кодом.

На выходе список всех URL с этой страницы. Парсить скрипты не нужно.
есть такое?
Re: HTML parser wanted!
От: α Российская Империя  
Дата: 02.03.18 18:52
Оценка:
Здравствуйте, Poseidon, Вы писали:

P>Друзья! Разыскиваю сабж для языка С.

P>На входе html страница с кодом.

P>На выходе список всех URL с этой страницы. Парсить скрипты не нужно.

P>есть такое?

1) libxml в режиме парсера html (html > xml > xpath > список ссылок)
2) регулярные выражения
Re: HTML parser wanted!
От: c-smile Канада http://terrainformatica.com
Дата: 02.03.18 22:21
Оценка:
Здравствуйте, Poseidon, Вы писали:

P>Друзья! Разыскиваю сабж для языка С.

P>На входе html страница с кодом.

P>На выходе список всех URL с этой страницы. Парсить скрипты не нужно.

P>есть такое?

Вот был писал примерно для таких целей когда-то:
https://www.codeproject.com/Articles/14076/Fast-and-Compact-HTML-XML-Scanner-Tokenizer

Хотя этот .h файл и для C++, но портируется на C элементарно.
Вариация оного используется в Sciter.
Re[2]: HTML parser wanted!
От: c-smile Канада http://terrainformatica.com
Дата: 02.03.18 22:23
Оценка:
Здравствуйте, α, Вы писали:

α>2) регулярные выражения


О! Точно!
Re[3]: HTML parser wanted!
От: α Российская Империя  
Дата: 02.03.18 22:33
Оценка: +2 -1
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, α, Вы писали:


α>>2) регулярные выражения


CS>О! Точно!


Я в курсе этого баяна и шо нельзя, но если осторожно и с допуском на два лаптя правее солнца — то регекспом аля href="(.*?)" в well-formed xml можно. Тем паче что речь идёт об извлечении гиперссылок, а не парсинге html.
Re[4]: HTML parser wanted!
От: c-smile Канада http://terrainformatica.com
Дата: 02.03.18 22:48
Оценка: +1
Здравствуйте, α, Вы писали:

"в well-formed xml можно..."

Ага:
<a href='foo.bar'>
<![CDATA[
  <a href="bar.foo">...</a>
]]>
</a>


А тут вот "если осторожно и с допуском на два лаптя правее солнца" можно было и не напрягаться и сократить до "авось", "помолясь" или просто "типа" ...
Re: HTML parser wanted!
От: Pzz Россия https://github.com/alexpevzner
Дата: 03.03.18 06:52
Оценка:
Здравствуйте, Poseidon, Вы писали:

P>Друзья! Разыскиваю сабж для языка С.


Пиши на Go. Там есть. https://godoc.org/golang.org/x/net/html
Re[2]: HTML parser wanted!
От: kov_serg Россия  
Дата: 03.03.18 07:41
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Здравствуйте, Poseidon, Вы писали:


P>>Друзья! Разыскиваю сабж для языка С.


Pzz>Пиши на Go. Там есть. https://godoc.org/golang.org/x/net/html

Лучше на PHP http://simplehtmldom.sourceforge.net/

А так вот такое есть https://github.com/lexborisov/myhtml
Re[3]: HTML parser wanted!
От: Pzz Россия https://github.com/alexpevzner
Дата: 03.03.18 07:58
Оценка:
Здравствуйте, kov_serg, Вы писали:

P>>>Друзья! Разыскиваю сабж для языка С.


Pzz>>Пиши на Go. Там есть. https://godoc.org/golang.org/x/net/html

_>Лучше на PHP http://simplehtmldom.sourceforge.net/

Компилятор Go выдает на выходе статически собранный исполняемый файл, которому для жизни вообще ничего не нужно. PHP, насколько я знаю, так не умеет.

Кроме того, Go — современный, приятный и удобный язык семейства C, со статической проверкой проверкой типов и всякое такое. Простой и понятный, сишник освоится с ним за неделю. Выдающий на выходе машинный код, а не интерпретируемый.
Re: HTML parser wanted!
От: peterbes Россия  
Дата: 03.03.18 08:57
Оценка: 4 (2)
Здравствуйте, Poseidon, Вы писали:

P>Друзья! Разыскиваю сабж для языка С.

P>На входе html страница с кодом.

P>На выходе список всех URL с этой страницы. Парсить скрипты не нужно.

P>есть такое?


гумбо — https://github.com/google/gumbo-parser
Re[4]: HTML parser wanted!
От: kov_serg Россия  
Дата: 03.03.18 10:49
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>>>Пиши на Go. Там есть. https://godoc.org/golang.org/x/net/html

_>>Лучше на PHP http://simplehtmldom.sourceforge.net/

Pzz>Компилятор Go выдает на выходе статически собранный исполняемый файл, которому для жизни вообще ничего не нужно. PHP, насколько я знаю, так не умеет.

Я имел ввиду что парсить html лучше скриптом который легко подправить, в отличии от бинарника. Т.к. html имеет свойсто меняться со временем.
Так что php, lua, perl всяко лучше чем бинарник.
Re[5]: HTML parser wanted!
От: Pzz Россия https://github.com/alexpevzner
Дата: 03.03.18 10:53
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Я имел ввиду что парсить html лучше скриптом который легко подправить, в отличии от бинарника. Т.к. html имеет свойсто меняться со временем.

_>Так что php, lua, perl всяко лучше чем бинарник.

Ну, во-первых, бровсеры, для которых html, собственно, и предназначен — отнюдь не скрипты, а вовсе даже бинарники. Во-вторых, если что-то начнет не срастаться, все равно потребуется некоторое время, чтобы разобраться. На этом фоне пересобрать бинарник — дело нехитрое. Да и в-третьих, немного меняется семантика тэгов и появляются новые, но синтаксис меняется мало.
Re[6]: HTML parser wanted!
От: kov_serg Россия  
Дата: 03.03.18 12:54
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Ну, во-первых, бровсеры, для которых html, собственно, и предназначен — отнюдь не скрипты, а вовсе даже бинарники. Во-вторых, если что-то начнет не срастаться, все равно потребуется некоторое время, чтобы разобраться. На этом фоне пересобрать бинарник — дело нехитрое. Да и в-третьих, немного меняется семантика тэгов и появляются новые, но синтаксис меняется мало.

Обычно со страницы надо вынуть нужную информацию (напиример текст, ссылки, прайсы, статистику и т.п.). Но и оформление страниц и их разметка со временем могут меняться. И проще поменять текстовый файл чем пересобирать бинарник. Более того можно эти скрипты проще в системе контроля версий.
Re[7]: HTML parser wanted!
От: Pzz Россия https://github.com/alexpevzner
Дата: 03.03.18 13:00
Оценка:
Здравствуйте, kov_serg, Вы писали:

_>Обычно со страницы надо вынуть нужную информацию (напиример текст, ссылки, прайсы, статистику и т.п.). Но и оформление страниц и их разметка со временем могут меняться. И проще поменять текстовый файл чем пересобирать бинарник. Более того можно эти скрипты проще в системе контроля версий.


Так не надо класть бинарники в систему контроля версий. Надо класть ихние исходники.
Re[8]: HTML parser wanted!
От: kov_serg Россия  
Дата: 03.03.18 13:13
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Так не надо класть бинарники в систему контроля версий. Надо класть ихние исходники.

Нафига. Обычно часть которая собирает данный с сайтов является лишь малой долей исходников и пресобирать всё ради этой ерунды как, то не айс.
Re[5]: HTML parser wanted!
От: α Российская Империя  
Дата: 03.03.18 20:59
Оценка:
Здравствуйте, c-smile, Вы писали:

CS><a href='foo.bar'>

CS><![CDATA[
CS> <a href="bar.foo">...</a>
CS>]]>
CS>А тут вот "если осторожно и с допуском на два лаптя правее солнца" можно было и не напрягаться и сократить до "авось", "помолясь" или просто "типа" ...

О, начался академический спор.
На практике у меня есть десяток скриптов под десять разных сайтов написанных на VBScript за полчаса, которые делают ровно то же самое — качают главную страницу, извлекают урлы регекспами, ходят по ним и грабят цены.
И на практике такой закидон как у тебя в примере не встречался мне ни разу )
А если бы даже и встретился, то повыкусывать комментарии и CDATу другим регекспом это дело еще пяти минут
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.