LINUX.ORG.RU

Парсинг комментариев

 


0

2

Писал я тут свой маленький userscript для ЛОРа, и пришла мысль о небольшой доработке. Предлагаю добавить в теги article itemprop=«comment» форума некоторые поля, предусмотренные схемой http://schema.org/UserComments :

creator — данные об авторе комментария
commentText — текст комментария (если не жалко трафика, конечно)
commentTime — время комментария
discusses — данные о сообщении и пользователе, на сообщение которого отвечаем

А то схема указана, а все специфичные поля схемы не заполнены. Будет проще писать юзерскрипты, не придётся парсить руками «от UserName <». Совместимость со старыми userscript'ами пострадать не должна. Соответствующие изменения, возможно, следует провести и по другим схемам.

★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

впрочем давай патч; против всего кроме commentText у меня возражений нет. Как discusses правильно оформлять в HTML я, правда, не очень понимаю

maxcom ★★★★★
()
Ответ на: комментарий от maxcom

Лучше уж или полностью по схеме, или совсем без неё.

Меня кстати когда я какой-то юзерскрипт писал сильно напрягло что текст комментария (абзацы и прочие элементы) в одном контейнере с подписью и ссылкой на ответ. Нормально только текст не выцепить, надо вычищать остальное. commentText по-моему должен закрываться перед .sign

Kalashnikov ★★★
()
Ответ на: комментарий от maxcom

впрочем давай патч

Я ещё даже не притрагивался к исходникам lor-а. Выкачаю — посмотрю. Пока просто в качестве идеи.

Sadler ★★★
() автор топика
Ответ на: комментарий от maxcom

автор комментария обозначен как rel=author, этого не достаточно?

С этим более или менее нормально. Больше напрягает отсутствие такого же поля для человека, которому отвечаешь.

Надо только разобраться с форматом этих данных в соответствии со схемой.

Sadler ★★★
() автор топика
Ответ на: комментарий от Kalashnikov

Лучше уж или полностью по схеме, или совсем без неё.

Там эта документация по схеме довольно мутная, не очень понятно как правильно, а примеров именно про комментарии нет. Но думаю что да, с commentText как-то не так как надо получилось. Надо будет подпись и ссылку на ответ вынести

maxcom ★★★★★
()
Ответ на: комментарий от Kalashnikov

Нормально только текст не выцепить, надо вычищать остальное. commentText по-моему должен закрываться перед .sign

Пока что можно ограничиться костылём по типу:

$(this).find('div[itemprop|="commentText"]').html().match('(.*)<div class="sign">')[1]

Но не очень приятно, да.

Sadler ★★★
() автор топика
Ответ на: комментарий от Sadler

Ну я тогда вроде забил на идею распарсить всё (не особо и надо было то) и просто ворочал всем контейнером комментария (article).

Я бы кстати сделал .children().slice(0, -2) или not.

Kalashnikov ★★★
()

itemprop=creator тоже приделал. C rel=author все как-то не очень понятно. С одной стороны HTML5 вроде говорит что rel=author распространяется не на весь документ, а только на itemscope. С другой похоже что google в authorship markup этого не различат и считает что все что rel=author это авторы странички, не различая авторов топика и комментаторов.

Так что теперь rel=author есть только у автора топика на странице топика, а itemprop=creator во всех подписях

maxcom ★★★★★
()
Ответ на: комментарий от maxcom

Как по мне, так выглядит довольно интересно.

Deleted
()
Ответ на: комментарий от maxcom

Можно title как-нибудь так сделать:

<span itemscope itemtype="discusses">
<span itemscope itemtype="http://schema.org/Comment">
<meta itemprop="url" content="comment_url"></meta>
<span itemprop="text"><a href="comment_url">комментарий</a></span>
 от 
<span itemprop="name">User</span> 
<span itemprop="dateCreated">
<time datetime="2012-11-04T22:06:58.817+04:00">04.11.2012 22:06:58</time>
</span>
</span>
</span>

Вроде, парсится как надо. Хотя, возможно, это слишком громоздко.

Sadler ★★★
() автор топика
Ответ на: комментарий от maxcom

кому-нибудь нужен?

А там разве не требуется в обязательном порядке Real Name ? ЛОР такой информации зачастую не имеет же.

Sadler ★★★
() автор топика
Ответ на: комментарий от Sadler

А там разве не требуется в обязательном порядке Real Name ? ЛОР такой информации зачастую не имеет же.

Требуется связать профили на lor и на google plus. Должна быть ссылка со страницы профиля на профиль на гугле и обратно, с профиля гугла на профиль на lor.

maxcom ★★★★★
()
Ответ на: комментарий от Sadler

Вроде, парсится как надо.

Беру свои слова назад, не как надо парсится. Тогда я не понимаю, как бы так правильно вложить CreativeWork внутрь discusses.

Sadler ★★★
() автор топика
Ответ на: комментарий от maxcom

Может быть, парсилка гугловская просто не поддерживает второй уровень вложения? Надо поискать реальный ресурс, на котором эта схема юзается да подглядеть.

Sadler ★★★
() автор топика
Ответ на: комментарий от maxcom

но мне кажется что-то вроде такого:

<span itemscope itemprop="discusses" itemtype="http://schema.org/Comment">
<span><a href="comment_url" itemprop="url">комментарий</a></span>
 от 
<span itemprop="creator">User</span> 
<time datetime="2012-11-04T22:06:58.817+04:00" itemprop="dateCreated">04.11.2012 22:06:58</time>
</span>

т.к. text тут явно не к месту (это не текст комментария); url можно прямо в A разметить; имя пользователя это creator (а не name); Ну и первые два спана это должен быть один как я написал

maxcom ★★★★★
()
Последнее исправление: maxcom (всего исправлений: 1)
Ответ на: комментарий от Sadler

это уже не второй, а третий. Второй это comment внутри article

maxcom ★★★★★
()
Ответ на: комментарий от maxcom

обоснуй

Описание на schema.org:

The UserInteraction event in which a user comments on an item.

Т.е. есть подозрение, что оно должно охватывать все комментарии на странице. А уже внутри него должен быть конкретные Comment'ы. По ссылке, которую я приводил выше, сделано именно так.

Sadler ★★★
() автор топика
Ответ на: комментарий от Sadler

Там как-то все загадочно, особенно если вот это почитать: http://www.w3.org/wiki/Comment.

То что ты говоришь тоже как-то не соответствует логике. У UserComments есть текст, автор, дата написания и т.п. — значит это отдельный комментарий, а не список. Про то что UserComments содержит Comment нигде не написано, а в Article написано явно что он содержит UserComments

maxcom ★★★★★
()
Ответ на: комментарий от maxcom

Я всё понимаю, но не удалось нагуглить ни единой странички, где бы UserComments использовалось как на ЛОРе.

Sadler ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.